【php代码分析】[RoarCTF 2019]Easy Calc---php解析规则--day02
一、界面
进入界面之后就是个计算框,啥都没有,看一下源代码。
提示有WAF,然后有一个新的页面calc.php。进去看一下。
二、cala.php分析
1、代码分析
总的来说就是get传num赋值给$str,看一下斜杠/拼接黑名单里的符号拼接/m,在不在传入的str中,如果不在就eval把字符串按照php代码执行。
其中正则匹配时候,\m多行查找
2、测试操作
calc.php? num=phpinfo()
注意在问号?和num之间有个空格。结果:
3、php解析规则
当php进行解析的时候,如果变量前面有空格,会去掉前面的空格再解析
而这里黑名单过滤,没有过滤这种情况,那么久可以构造一个查询语句
? num=1;var_dump(scandir(chr(47)))
这里使用char(47)来代替根目录\,绕过过滤。
scandir()
结果:
发现了有flagg,尝试读取。
? num=1;var_dump(file_get_contents(chr(47).chr(102).chr(49).chr(97).chr(103).chr(103)))
得到结果: