5.攻防世界 fileinclude

进入题目页面如下

提示flag在flag.php

ctrl+u,查看源码

给出了一段PHP代码,进行代码审计

php 复制代码
<?php
// 检查是否开启了错误显示功能
if( !ini_get('display_errors') ) {
    // 如果没有开启,则将错误显示功能设置为开启状态
    ini_set('display_errors', 'On');
}

// 设置错误报告级别为显示所有类型的错误
error_reporting(E_ALL);

// 从客户端的 Cookie 中获取名为 'language' 的值,并赋值给变量 $lan
$lan = $_COOKIE['language'];

// 检查 $lan 是否为空
if(!$lan) {
    // 如果为空,设置一个名为 'language' 的 Cookie,值为 'english'
    @setcookie("language","english");
    // 包含名为 'english.php' 的文件
    @include("english.php");
} else {
    // 如果不为空,将 $lan 的值加上 '.php' 后缀后,包含对应的文件
    @include($lan.".php");
}

// 读取当前文件 'index.php' 的内容,并将其赋值给变量 $x
$x = file_get_contents('index.php');

// 输出变量 $x 的内容,即显示当前文件的源代码
echo $x;
文件包含漏洞

代码中使用 include 函数包含文件,而 $lan 变量的值直接取自用户的 Cookie。可以通过修改 Cookie 中的 language 值,来包含任意文件,从而导致文件包含漏洞。

代码没有对 $lan 变量的值进行任何验证和过滤,可以构造特殊的文件名来绕过正常的文件包含逻辑,执行恶意代码或获取敏感信息。

修改 Cookie 中的 language 值为 flag。当请求该页面时,服务器会尝试包含 flag.php 文件,从而将 flag 的内容输出到页面上

Cookie: language=php://filter/read=convert.base64-encode/resource=flag

利用 PHP 伪协议来绕过常规的文件包含限制并获取敏感文件

使用 php://filter 伪协议对文件内容进行 Base64 编码后输出,避免因文件内容格式问题(如二进制文件)导致显示异常,同时绕过部分简单的过滤机制。

read=convert.base64-encode

php://filter 伪协议的一个过滤器,指定了读取文件内容时要进行的操作。convert.base64-encode 表示将文件内容进行 Base64 编码,文件内容就会以 Base64 字符串的形式输出,方便在网页上显示和后续解码。

resourcephp://filter 伪协议中用于指定要操作的文件资源的参数

用burp suite抓包,修改cookie

得到base64编码的flag可以利用下面这个在线工具解码

Base64解码 Base64编码 UTF8 GB2312 UTF16 GBK 二进制 十六进制 解密 - The X 在线工具

最终得到flag

cyberpeace{94027b50fe68bcb6ff13855e5cb60024}

相关推荐
用户9623779544812 小时前
DVWA 靶场实验报告 (High Level)
安全
数据智能老司机15 小时前
用于进攻性网络安全的智能体 AI——在 n8n 中构建你的第一个 AI 工作流
人工智能·安全·agent
数据智能老司机15 小时前
用于进攻性网络安全的智能体 AI——智能体 AI 入门
人工智能·安全·agent
用户9623779544817 小时前
DVWA 靶场实验报告 (Medium Level)
安全
red1giant_star17 小时前
S2-067 漏洞复现:Struts2 S2-067 文件上传路径穿越漏洞
安全
用户9623779544820 小时前
DVWA Weak Session IDs High 的 Cookie dvwaSession 为什么刷新不出来?
安全
BingoGo2 天前
当你的 PHP 应用的 API 没有限流时会发生什么?
后端·php
JaguarJack2 天前
当你的 PHP 应用的 API 没有限流时会发生什么?
后端·php·服务端
cipher2 天前
ERC-4626 通胀攻击:DeFi 金库的"捐款陷阱"
前端·后端·安全
BingoGo3 天前
OpenSwoole 26.2.0 发布:支持 PHP 8.5、io_uring 后端及协程调试改进
后端·php