1.打开环境,审计代码。
考点是php绕过,主要是陌生的函数
$_SERVER['PHP_SELF']#匹配url中的执行脚本的php文件,也就是第一个php文件后的所有文件路径,但是?传参不匹配
$_SERVER['REQUEST_URI']#匹配url中除域名外的其他部分
basename()截取最后一个/前的内容,无法处理非ascii字符,如果有会向前一个/
本地测试:
再者是preg_match绕过:
我尝试了用'和\绕过,发现没用,可能是php版本的问题
source_name用source.name或source[name绕过
preg_match('/utils\.php\/*$/i用在utils.php后加非ascii字符绕过
payload:
/index.php/utils.php/%88?show[source=1