updated:
ADWorldCTF-Web(4)
题目如下
根据描述,这个网站可以检测在线服务的状态,经笔者测试,输入的内容以get方式通过一个名叫url的参数提交,而且当输入有效的ip地址时,网页会返回ping的结果。然而当笔者试图通过拼接的方式来执行命令时,网站提示Invalid URL,这说明网站会对输入的特殊字符进行过滤。
到这里笔者一时没有了思路,因此只能看看大佬们的wp,发现了一种叫做模糊测试的东西,它可以对特殊字符逐个进行测试,看看那些字符可以绕过网站的过滤。这里我们用crunch和wfuzz工具进行测试。
先用crunch工具生成特殊字符的字典
1 |
|
再用wfuzz工具进行测试
1 |
|
测试结果如下:
现在线索已经出现了,重点落在“@”,“/”,“-”三个字符上。
其实到这里如果没有额外的信息很难做下去,然而原本的赛题上有提示,要求读一下PHP CURL手册,我们分别google一下php curl + 刚刚的三个字符,发现一种使用方法是@加上文件全路径的方式附加文件
来自https://jasonhzy.github.io/2016/05/04/php-curl-file/
因此我们可以令url=@文件路径来查看文件内容,然而我们还不知道要看什么文件,这时就需要用到另一种获取信息的技巧,即报错内容。
大佬的wp是利用了url编码的范围限制进行了类似于宽字符注入的操作,笔者再次进行的模糊测试也看到了这一点。
当url编码大于7Fh时报错
报错信息如下
在报错信息中可以找到DATABASE的路径
flag的格式为WHCTF{xxx},因此payload如下:
1 |
|