点击链接,进入默认页面:
是一个计算器的小应用
f12,查看源码可以得到提示:
这样我们知道有个calc.php文件,还有个num变量
同时还知道设置了WAF
现在查看calc.php:
因为显示了源码,我们也知道了会过滤一些输入
接下来开始正式解题:
首先WAF会限制我们对num的输入,不能出现字母
但是通过在num和?间加一个空格就可以绕过:
对比:
接下来,我们需要从文件夹里找出flag,这就需要我们通过scandir()函数读取文件夹里的文件,再用print_r输出:
不过由于 / 被过滤了,因此得换种方法,可以尝试用<chr(对应ascii码值)>来替代
例如这里我们需要替换 / ,而 / 的ascii码值为47,所以可以采用:
? num=print_r(scandir(chr(47)))
scandir() 函数返回指定目录中的文件和目录的数组
这样我们可以发现flag很有可能在“flagg”文件里
接下来读取文件,用file_get_contents()函数,同时不要忘记要转成用chr()表示的形式:
? num=print_r(file_get_contents(chr(47).chr(102).chr(49).chr(97).chr(103).chr(103)))
file_get_contents() :把整个文件读入一个字符串中。
得到flag:flag{43634ee2-aa2d-46e2-b96a-da5fe01f1588}