ctf show web入门81

这是一道非常经典的 文件包含漏洞(LFI) 结合 日志注入(Log Injection) 的 Web 题目。我们可以看到代码将输入的php data :都经行了字符串替换为???对 php 和 data 伪协议进行了过滤,这封死了直接通过 php://filter 或 data:// 获取 Web Shell 的路径。

在这种情况下,日志包含 是最通用的 GetShell 手段

  1. 源码分析漏洞点:include($file) 存在明显的文件包含漏洞。
    防御手段:使用了 str_replace 过滤了 php 和 data 关键字。这意味着你无法使用常用的封装协议(如 php://input)。
    绕过思路:由于它没有过滤斜杠和敏感目录,我们可以尝试包含服务器系统日志。
  2. 核心思路:日志注入
    Web 服务器(如 Nginx 或 Apache)会将每一个 HTTP 请求的信息记录在日志文件中。如果我们发送一个包含 PHP 代码的请求,这段代码就会被写入日志。当我们利用 include 包含该日志文件时,PHP 解释器会执行其中的代码。
    步骤一:定位日志文件
    你需要尝试常见的 Web 日志存放路径(通常在 Linux 下):
    Nginx 日志:/var/log/nginx/access.log 或 /var/log/nginx/error.log
    Apache 日志:/var/log/apache2/access.log 或 /etc/httpd/logs/access_log
    验证方法:
    在 URL 后面尝试访问:?file=/var/log/nginx/access.log。如果页面返回了大量的 HTTP 请求记录,说明路径正确。

发现是nginx文件并且日志内容存在与?file=/var/log/nginx/access.log目录下

打开hackbar添加user-agent 内容为:?php eval($_POST1);?>

在尝试访问日志目录下的文件内容

把url+?file=/var/log/nginx/access.log

并且开启post method在里面输入1=system('ls');

发现了存在两个文件fl0g.php和 index.php我们尝试访问fl0g.php 文件

在body里输入1=system('tac fl0g.php');

得到flag为:$flag="ctfshow{4d942eef-e113-43a5-b4d5-de587112182d}

相关推荐
黄林晴9 分钟前
AI时代终端窗口堆成山?这款工具让我爱不释手
前端
铁皮饭盒11 分钟前
Bun 多线程有多快?postMessage 传输字符串比 Node.js 快 400 倍!
前端·javascript·后端
橙子家10 小时前
浏览器缓存之【身份与会话管理】:Cookies 和 Private state tokens
前端
最新资讯动态11 小时前
HDC 2026 | 对话鲸鸿动能:存量时代,品牌如何夺回营销“主动权”?
前端
最新资讯动态11 小时前
游戏出海,从产品走向体系
前端
最新资讯动态11 小时前
20人团队跑出百万DAU、大厂也来抢量:谁在鸿蒙生态跑出加速度
前端
最新资讯动态11 小时前
千万开发者背后,鸿蒙商业化的B面
前端
爱勇宝13 小时前
AI 时代:智商决定起点,情商决定走多远
前端·ai编程
kyriewen13 小时前
用了半年 Claude Code 后,我尝试关掉它写了一周代码——结果比想象中严重
前端·javascript·ai编程
IT_陈寒14 小时前
Vite的静态资源打包让我熬夜到三点,这坑千万别跳
前端·人工智能·后端