Bypass:URL非法参数名产生的绕过问题
测试
测试demo:
<?php
highlight_file(__FILE__);
error_reporting(0);
$var = $_REQUEST["mo chu."];
var_dump($_REQUEST);
echo "PHP-Version:".phpversion()."<br>";
if(is_null($var)){
die("<br>$var is null");
}else{
echo "<br>The content of $var is:".$var;
}
对于不是[
的非法字符,php(php<8)将一次性将所有的非法字符转换成下划线
Trick
具体来说,这个trick是php<8时才有的。
如果参数名中出现了[
,那么参数名中如果在[
之后还有其他非法字符,那么这些非法字符就不会被转化成下划线
那么就可以传类似于mo_chu.
这种的参数
php8测试:
php8的修复
遍历所有的非法字符,均替换成下划线