Bypass:URL非法参数名产生的绕过问题

发布时间 2023-09-11 19:58:18作者: Icfh

测试

测试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)将一次性将所有的非法字符转换成下划线

image-20230911193747442

Trick

具体来说,这个trick是php<8时才有的。

如果参数名中出现了[,那么参数名中如果在[之后还有其他非法字符,那么这些非法字符就不会被转化成下划线

那么就可以传类似于mo_chu.这种的参数

image-20230911193139632

php8测试:

image-20230911193419970

php8的修复

遍历所有的非法字符,均替换成下划线

image-20230911191918191

参考链接

  1. https://blog.csdn.net/mochu7777777/article/details/115050295