CTFer blogs--Web-fileinclude

发布时间 2023-10-10 19:40:29作者: Heck1ng

本题来源攻防世界

解题思路:

首先分析代码,将cookie中‘language’的值传入lan

在后续又使用include调用了lan这个变量,因此可以从此处写入读取flag.php的payload

可以使用burpsuite进行抓包后添加cookie值

name:language

value:php://filter/read=convert.base64-encode/resource=/var/www/html/flag

得到base64加密后再进行解码即可得到flag

 

 

第二题

fileinlucde

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 = flag.php  使用http://filter伪协议来获取源代码

file2 = hello ctf 想要让函数getcontent返回字符串,可以使用php://input伪协议绕过

因此可以构造如下payload

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

同时在post中传入 hello ctf=hello ctf

因为post=传参是以键值对的形式进行传输的

之后打开burpsuite进行抓包,抓包后的结果去掉键只保留值 即 hello ctf 发送即可得到base64加密,解密即可得到flag