发帖
 找回密码
 立即注册
搜索
0 0

WEB bp官方靶场File upload vulnerabilities 文件上传漏洞5

CTF练习 895 0 2025-8-20 20:41:24

第五关 通过混淆文件扩展名上传 Web shell

这一关就是上传功能点只允许上传jpg/png图片文件,那么就通过混淆文件扩展名绕过服务端限制,实现恶意文件上传

提示:1、靶场包含易受攻击的图片上传功能

2、某些文件扩展名被列入黑名单,但可以使用经典的混淆技术绕过这种防御

3、请上传一个基本的 PHP Web shell,然后使用它来窃取文件 /home/carlos/secret 的内容

具体操作

1、正常登录用户wiener:peter,上传正确格式的头像图片,上传成功,然后返回“我的账户”(具体操作见第四功)

2、接下来尝试上传恶意php文件

创建一个名为 exploit.php 的文件,其中包含用于获取 Carlos 密钥内容的脚本:

<?php echo file_get_contents('/home/carlos/secret'); ?>

3、提示上传错,只允许上传jpg/png文件

那么有限制该怎么绕过呢?

4、先找到用于提交文件上传的 POST /my-account/avatar 请求

然后找到与 PHP 文件相关的正文部分。在 Content-Disposition 标头中,更改 filename 参数的值,以包含 URL 编码的空字节,后跟 .jpg 扩展名:

改成:filename="exploit.php%00.jpg"
​
解释其中的 %00 就是典型的 “空字节注入”(Null Byte Injection),也常被称为 “%00截断” 或 “URL编码的空字符截断”。

返回200ok,说明恶意文件上传成功

现在直接打开上传的文件进行查看,直接访问/files/avatars/exploit.php

恶意文件使用00截断上传成功后,直接访问恶意文件路径,然后暴露出秘钥

GAUhRhewuNK4tECqVtv8u3pLsqQIfcHS

提交用户秘钥,靶场过关

──── 0人觉得很赞 ────
免责声明:
1、本论坛中所有用户发布的内容仅代表作者个人观点,与本网站立场无关,本站不对其真实性、完整性或观点承担任何责任。
2、本论坛所提供的全部信息与内容,不保证其准确性、完整性或时效性。因阅读或使用本站内容而产生的任何误导、损失或风险,本站概不承担任何连带或法律责任。
3、当国家司法、行政机关依照法定程序要求本论坛披露用户信息时,本站予以配合并因此免责。
4、因网络线路故障、技术问题、不可抗力或本站无法控制的其他原因导致的服务中断或暂停,本站不承担由此造成的任何直接或间接损失。
5、对于任何通过技术手段破坏、攻击本论坛系统或扰乱正常秩序的行为,本站有权采取包括但不限于限制账号、封禁账号、追究法律责任等措施。
您需要登录后才可以回帖 立即登录
高级模式
返回