BUUCTF web Easy Calc (php字符串解析)

看一眼源码,就是计算。但是给出了url,应该是传递给那个calc.php了吧。
BUUCTF web Easy Calc (php字符串解析)
访问一下calc.php
BUUCTF web Easy Calc (php字符串解析)
我们需要绕过黑名单给num传参,然后让eval去执行这个str


知识盲区

我们在url传参可以传各种字符,但是php解析字符时要把所有字符全部转化为有效的变量名,因此它会做两件事:1.删除空白符、2.将某些字符转换为下划线(包括空格)

比如说我们传递一个x=a ?x=a,但是waf不允许上传一个非数值型的值。
我们就可以通过加空格的方式来绕过,? x=a,这样waf找不到x这个变量,因为现在只有空格 x这个变量,但是当php解析字符串额时候,就会吧空格去掉。


用scandir(/)查看一下目录,/用ascii代替 ? num=print_r(scandir(chr(47))),找到f1agg文件

查看文件? num=print_r(file_get_contents(chr(47).chr(102).chr(49).chr(97).chr(103).chr(103)))
爆出flag