BUUCTF [RoarCTF 2019]Easy Calc 刷题题解

[RoarCTF 2019]Easy Calc

BUUCTF [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)))
BUUCTF [RoarCTF 2019]Easy Calc 刷题题解

找到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走私

上一篇:WAF、防火墙、IDS、IPS的介绍和区别


下一篇:sqlmap之绕过waf思路