题目链接:[GXYCTF2019]Ping Ping Ping
解题思路
访问靶机,得到如下页面,类似于URL参数
尝试用HackBar构造url传输过去看看
发现返回了ping命令的执行结果,可以猜测php脚本命令是ping -c 4 $ip
,暂时不知道执行的函数时system()还是exec(),但是大概能想到这题有命令执行漏洞,那么我们就测试以下:构建url?ip=111;ls
,看看有没有目录文件返回:
发现ls命令执行成功,那么可以确定是命令执行漏洞,且项目路径下还发现有flag.php,我们尝试构造url来cat一下:
发现回复"fxck your space",证明是有判断过滤了空格,空格的作用一般是分隔关键字,这时候就试试应对空格过滤的办法(想办法识别关键字),尝试了\${IFS}、%09、%0a
都不行,最后发现\${IFS}\$9
可以绕过过滤:
但是又发现flag字符串被过滤了,那试试访问index.php页面,发现可以访问,也就是说没有被index.php没有被过滤
这时候我们可以看到index.php的内容就是正则过滤规则,但是没有显示完全,因为php代码是包裹在<?php?>块中,HTML不认识该标签,所以会把它们当作注释,以上页面代码中缺失的部分按F12查看源码就可以发现,index.php的源码如下: