BUU[RoarCTF 2019]Easy Calc

打开发现一个计算界面
查看页面源代码
BUU[RoarCTF 2019]Easy Calc_第1张图片
可以看见有个url提示
calc.php?num="+encodeURIComponent($("#content").val())
查看calc.php获取源码
BUU[RoarCTF 2019]Easy Calc_第2张图片

###############
$("#content").val() 是什么意思:

获取id为content的HTML标签元素的值,是JQuery, $("#content")相当于document.getElementById(“content”); $("#content").val()相当于 document.getElementById(“content”).value;

但是无论怎么注入都是400,403和500,这里用的是一个新的点:PHP的字符串解析特性

:PHP需要将所有参数转换为有效的变量名,因此在解析查询字符串时,它会做两件事:1.删除空白符 2.将某些字符转换为下划线(包括空格)当waf不让你过的时候,php却可以让你过


进行绕waf,当php进行解析的时候,如果变量前面有空格,会去掉前面的空格再解析,那么我们就可以利用这个特点绕过waf。

num被限制了,但在num前面加个空格,waf就管不着了,因为waf只是限制了num,waf并没有限制’ num’,当php解析的时候,又会把’ num’前面的空格去掉在解析,利用这点来上传非法字符

构造payload来查看目录,用chr转化成ascll码进行绕过

这题存在高危漏洞,提示我们传递函数,拿flag
先扫描根目录下的所有文件,利用scandir()函数列出 参数目录 中的文件和目录
也就是scandir("/"),但是“/”被过滤了,所以我们用chr(“47”)绕过

calc.php?%20num=1;var_dump(scandir(chr(47)))

BUU[RoarCTF 2019]Easy Calc_第3张图片
发现flagg文件,然后去读取这个文件

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

BUU[RoarCTF 2019]Easy Calc_第4张图片

#########
这题也可以用http:走私的方法

你可能感兴趣的:(BUUCTF)