本期“安仔教室”,ISEC实验室的老师,将为大家记录本次比赛的解题思路及方法。
Web1
按照题目制订的battle ground的规则开始玩,先理解该公众号供应的所有功能。有两种解题方法,一种是抓取流量包,一种是命令实行。

方法一
图1
先看一下有哪些武器,选择一个捡起,载入武器,向你的VPS射击,就可以获取到题目的IP。在射击之前,用tcpdump -nn -i eth0 icmp -w dc0531.cap先在你的VPS上抓包。
图2
这题存在git透露,先把源代码扒下来:
图3
这里只阐明代码的关键部分,关键代码路径在: Application/Home/Controller/TestController.class.php。
先看P方法,改方法紧张是用于将$weapon文件的内容base64加密后前100个字符存放在$this->info['bullet']中,用不才面的s方法,代码如下:
图4
再看r方法,该方法用于初始化$this->info['status'] = 100,经由初始化之后才能利用s方法。s方法便是携带上面base64加密后的$weapon文件的内容前100个字符,去ping目标主机,也便是微信"大众年夜众号中的shot功能,ping命令的-p 选项可以设置icmp报文数据部分的内容。这里要把稳下面代码中16、17行,$this->info['status'] - 1为99,相应$bullet = $this->info['bullet'][100-99];即从$this->info['bullet'][1]开始,漏掉了$this->info['bullet'][0],以是我们末了获取的内容在开头要加上一个字符。
图5
明白了以上三个方法,我们就知道如何利用漏洞获取flag了。首先我们要把flag文件装入$weapon,然后一贯shot我们的VPS,详细利用如下:
图6
VPS上用tcpdump抓包,提取内容为:D9waHAKJGZsYWcgPSAiREMwNTMxe1dlY2hBdF9Jc19Tb19DMG9sfSI7Cg== ,在开头随便加上一个字母,这里我加P,解出来如下:
图7
方法二
下面说其余一个解法,便是通过命令实行的办法得到flag。实在一开始我创造方法u中存在命令实行,但是看了前面的代码,创造没有调用到该函数,就暂时忽略了。后来想到这是ThinkPHP的程序,Thinkphp是可以通过路由办法调用方法的,方法u的代码如下:
图8
下面就说说如何利用这个命令实行漏洞。首先在我们的VPS上留下python反弹shell脚本,然后根据Thinkphp3.2.3的路由规则,分别访问一下两个链接,当然你要在你的VPS上提前侦听某个端口,链接如下:
图9
图10
Web2
这道题目可以本地搭环境复现,题目利用的是Metinfo6.0.0,上网搜索该版本cms漏洞,可以看到《Metinfo 6.0.0 任意文件读取漏洞》的漏洞剖析,题目刚好也是稽核这个漏洞,只是题目环境用的是最新版的Metinfo6.0.0,与该博客上的版本代码略有差别,不过还是能绕过,详细剖析可以看那篇文章,这里不赘述,直接给出利用办法。
图11
Web3
python沙箱逃逸,碰着空格和某些关键字就会直接断开,直接read也会断开,payload如下:
图12
图13
Web4
用dirb扫描创造存在git透露,用Githack将透露的文件扒下来,flag.php中即可找到flag。
图14
图15
这题是一个经典的配置文件写入问题,实际稽核内容可参考《 CTF_web/web200-7 》)