[RoarCTF 2019]Easy Calc
查看源码
$("#content").val():
获取id为content的HTML标签元素的值,是JQuery,
发现有calc.php,看看有什么
这里显示了waf的过滤规则
我们上传字符发现都被过滤了,这里考察的是PHP的字符串解析特性
PHP需要将所有参数转换为有效的变量名,因此在解析查询字符串时,它会做两件事:
1.删除空白符
2.将某些字符转换为下划线(包括空格)
利用这个特性,我们就可以在num前面加一个空格,然后就能绕过waf,执行php
我们发现过滤了"/",因此用chr()将ASCII转换为字符串,这个字符的ASCII码是47
可以使用的函数:
var_dump() 函数用于输出变量的相关信息
scandir() 列出 参数目录 中的文件和目录
file_get_contents() 把文件内容读取到字符窜
先用scandir列出根目录下的文件,构造:? num=1;var_dump(scandir(chr(47)))
找到flag文件名
转换为ASCII为:
用file读取文件内容
构造:? num=1;var_dump(file(chr(47).chr(102).chr(49).chr(97).chr(103).chr(103)))
“.” 点号的作用是用来拼接字符的,结果形式为 /f1agg