RoarCTF 2019 Easy Calc 1
尝试后发现,只能输入数字,
查看网页源代码,可以看见calc.php,
尝试打开calc.php,发现其过滤字符列表,如图:
可以打开,并且显示了源码
foreach 语法结构提供了遍历数组的简单方式。
语法:
1 | foreach (array_expression as $value) |
在这道题里,会对黑名单中的每一个值都拿出来连接成正则表达式的字符串,/m
表示多行查找
其他几个参数:
1 | /i (忽略大小写) |
假如绕过的话,我们就可以用eval执行任意php语句
给num参数传参,发现只能传数字,说明与WAF问题,
WAF的问题:WAF不允许num传入字母,那我们可以在num前加个空格来绕过WAF
这里利用PHP的字符串解析特性来绕过WAF,如:
1 | calc.php? num=phpinfo(); |
scandir(/)可以查看根目录下的所有文件,用chr()来绕过waf,注意在calc.php页面提交
所以就是:
1 | ? num=print_r(scandir('/')); |
打开后,发现flagg文件,打开文件,即可发现flag,
1 | ? num=print_r(file_get_contents('/flagg')); |
总结;
1、scandir(‘/‘),foreach函数的运用
2、chr码的简单应用
评论系统未开启,无法评论!