题目地址:https://buuoj.cn/challenges
解题思路
第一步:进入题目,发现有一个输入栏叫我们输入计算表达式,按f12查看提示,看到一个calc.php页面且参数为num,且calc设置了WAF保护措施。
第二步:访问calc.php页面发现WAF安全规则以及参数检测
-
可以看到calc.php页面对num参数进行了规定,不允许参入空格以及其他的特殊字符
-
让num传入数字,在页面上返回数字
-
让num传入非数字,发现WAF限制
第三步:绕过WAF
WAF检测的是"num"参数,若我们在num参数前添加空格,让”num“变成” num“,那就可以绕过WAF,而php在接受参数时会将空格删除,将” num“转变成”num“进行接收。
第四步:绕过num限制
php对num参数进行了限制,不允许携带空格以及一些特殊字符,可以通过chr()函数携带ASCII码进行绕过。
第五步:扫描目录
使用函数scandir()获取根目录"/"下的所有文件名,并使用print_r将其打印出来,URL构造? num=print_r(scandir(chr(47)))
,发现flag所在位置:f1agg
第六步:获取flag
使用函数file_get_contents()将f1agg文件读入字符串中并用print_r打印出来,
URL为? num=print_r(file_get_contents(chr(47).chr(102).chr(49).chr(97).chr(103).chr(103)))
flag为:flag{1b2d35a8-d683-4286-a98f-03eacbfd0055}