[GKCTF2020] CheckIN

发布于 2021-08-06  61 次阅读


知识点

php7-gc-bypass漏洞利用PHP garbage collector程序中的堆溢出触发进而执行命令
影响范围是linux,php7.0-7.3

解题

<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();

观察源代码,我们 不难发现,Get传参Ginkgo,$this->decode可以进行命令执行,尝试上传 一句话木马,连接蚁剑。

image-20201220203934036

发现flag在根目录但是 没有 权限 下面 存在 一个readflag函数,猜测应该是通过readflag这个文件来读取flag文件。

image-20201220204052591

打开之后发现是 一堆乱码。裂开。

image-20201220204244446

看一下phpinfo(); php版本是7.3.18 百度 是否存在 cve漏洞。

image-20201220204400794

果然 存在 远程代码执行漏洞, 直接 网上 找到 exp 利用

exp地址:

https://github.com/mm0r1/exploits/blob/master/php7-gc-bypass/exploit.php
image-20201220204751038

下载 之后 利用 命令执行漏洞 执行 readflag 文件 读取 flag

因为 一般 情况下 tmp 文件夹权限 都比较高,因此 上传到tmp文件夹。

image-20201220205110081

上传之后,get传参 包含 这个文件 即可

image-20201220205609319
image-20201220205620378