文件上传绕过

 黑名单绕过:

第一种:大小写绕过:打开上传界面,弹出“不能上传php文件”的提示,猜测是通过客户端黑名单来限制上传文件的类型。修改文件扩展名为.PhP,利用大小写绕过

第二种:修改为*.php3 php5 php.abc

第三种:先上传一个带有一句话木马的文件,再上传一个解析的文件

`<FilesMatch "abc.jpg">`  //匹配名称中带有abc.jpg的文件
`SetHandler application/x-httpd-php`  //将其按php解析

    </FilesMatch>

在这里插入图片描述
第四种:上传没有在黑名单中的格式

第五种:后缀名加空
设置为1. php(1.空格php)

第六种:
没有对后缀名进行去”:: D A T A ” 处 理 , 利 用 w i n d o w s 特 性 , 可 在 后 缀 名 中 加 ” : : DATA”处理,利用windows特性,可在后缀名中加” :: DATAwindows::DATA”绕过:

第七种:
黑名单过滤,注意第15行和之前不太一样,路径拼接的是处理后的文件名,于是构造info.php. . (点+空格+点),经过处理后,文件名变成info.php.,即可绕过。

第八种:
双写绕过

 白名单:
  1. 用burpsuite,抓包改包修改上传文件格式
    例如:上传的是php.php的,改为php.jpg的就可以上传成功
    在这里插入图片描述
  2. 00截断
    在这里插入图片描述
### 文件上传绕过%00截断漏洞解决方案 #### 背景介绍 文件上传中的`%00`截断漏洞主要存在于较旧版本的PHP环境中,在这些环境下,如果`magic_quotes_gpc=off`,则可以通过特定手段绕过文件名验证机制。然而,随着技术的发展,现代Web应用框架和服务器端编程语言对此类攻击已经有了较为完善的防护措施。 #### 技术细节分析 对于低于PHP 5.2.4版本的情况,并且当`php.ini`中设置为`magic_quotes_gpc=off`时,可以尝试使用`%00`字符来终止字符串解析[^5]。具体来说: - **GET请求**:浏览器会自动解码URL参数中的特殊字符; - **POST请求**:不会自动解码表单数据中的特殊字符;因此为了实现`%00`的效果,需要将它编码成`%25%30%30`形式发送给服务器,或者直接在Burp Suite这样的工具里手动编辑HTTP报文,把相应的字节改成十六进制表示法下的`00`[^1]。 #### 实际案例说明 在一个典型的场景中,假设存在一个允许用户上传图片的应用程序,该应用程序试图通过检查文件扩展名为`.jpg`或其他图像格式的方式来阻止恶意脚本上传。此时,攻击者可以选择构造如下类型的文件名:“`evil.php.jpg\0.png`”。当服务器接收到这个文件并尝试处理其路径时,遇到第一个出现的NULL(`\0`)就会停止进一步解释剩余部分,最终可能导致只保存了前面的部分——即带有PHP代码的有效载荷被当作合法图片存储下来[^2]。 #### 防护建议 为了避免上述风险,开发者应当采取以下预防措施: - 升级至最新稳定版的开发平台和技术栈; - 启用适当的安全配置选项(如开启`magic_quotes_gpc`),尽管这并不是推荐的做法因为更好的实践是在代码层面做更严格的输入过滤; - 应用多层防御原则,比如结合前端JavaScript验证加上服务端逻辑双重确认。 ```python import os.path def validate_filename(filename): allowed_extensions = ['.png', '.jpeg'] # Remove any null bytes from filename to prevent truncation attacks. clean_name = "".join([c for c in filename if ord(c) != 0]) ext = os.path.splitext(clean_name)[1].lower() return ext in allowed_extensions and not ".." in clean_name ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值