buuctf--[RoarCTF 2019]Easy Calc 1--WAF

点击链接,进入默认页面:
buuctf--[RoarCTF 2019]Easy Calc 1--WAF_第1张图片是一个计算器的小应用
f12,查看源码可以得到提示:
buuctf--[RoarCTF 2019]Easy Calc 1--WAF_第2张图片这样我们知道有个calc.php文件,还有个num变量
同时还知道设置了WAF
现在查看calc.php:
buuctf--[RoarCTF 2019]Easy Calc 1--WAF_第3张图片因为显示了源码,我们也知道了会过滤一些输入

接下来开始正式解题:
首先WAF会限制我们对num的输入,不能出现字母
但是通过在num和?间加一个空格就可以绕过:
对比:
buuctf--[RoarCTF 2019]Easy Calc 1--WAF_第4张图片

buuctf--[RoarCTF 2019]Easy Calc 1--WAF_第5张图片接下来,我们需要从文件夹里找出flag,这就需要我们通过scandir()函数读取文件夹里的文件,再用print_r输出:
buuctf--[RoarCTF 2019]Easy Calc 1--WAF_第6张图片不过由于 / 被过滤了,因此得换种方法,可以尝试用来替代
例如这里我们需要替换 / ,而 / 的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}

你可能感兴趣的:(php)