第十三题——[RoarCTF 2019]Easy Calc

题目地址:https://buuoj.cn/challenges

解题思路

第一步:进入题目,发现有一个输入栏叫我们输入计算表达式,按f12查看提示,看到一个calc.php页面且参数为num,且calc设置了WAF保护措施。

第十三题——[RoarCTF 2019]Easy Calc
第十三题——[RoarCTF 2019]Easy Calc

第二步:访问calc.php页面发现WAF安全规则以及参数检测

  1. 可以看到calc.php页面对num参数进行了规定,不允许参入空格以及其他的特殊字符
    第十三题——[RoarCTF 2019]Easy Calc

  2. 让num传入数字,在页面上返回数字
    第十三题——[RoarCTF 2019]Easy Calc

  3. 让num传入非数字,发现WAF限制
    第十三题——[RoarCTF 2019]Easy Calc

第三步:绕过WAF

WAF检测的是"num"参数,若我们在num参数前添加空格,让”num“变成” num“,那就可以绕过WAF,而php在接受参数时会将空格删除,将” num“转变成”num“进行接收。

第十三题——[RoarCTF 2019]Easy Calc

第四步:绕过num限制

php对num参数进行了限制,不允许携带空格以及一些特殊字符,可以通过chr()函数携带ASCII码进行绕过。
第十三题——[RoarCTF 2019]Easy Calc

第五步:扫描目录

使用函数scandir()获取根目录"/"下的所有文件名,并使用print_r将其打印出来,URL构造? num=print_r(scandir(chr(47))),发现flag所在位置:f1agg
第十三题——[RoarCTF 2019]Easy Calc

scandir用法介绍

第六步:获取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}
第十三题——[RoarCTF 2019]Easy Calc

上一篇:常见waf拦截页面


下一篇:一专属SRC - Sql注入 - Bypass 长亭Waf