前言:
即使是最详尽的黑名单也可能被经典的混淆技术绕过。假设验证代码区分大小写并且无法识别它exploit.pHp实际上是一个.php文件。如果随后将文件扩展名映射到 MIME 类型的代码不区分大小写,则这种差异允许您将恶意 PHP 文件偷偷通过验证,最终可能由服务器执行。

还可以使用以下技术获得类似的结果:

  • 提供多个扩展。根据用于解析文件名的算法,以下文件可能被解释为 PHP 文件或 JPG 图像:exploit.php.jpg
  • 添加尾随字符。一些组件会去除或忽略尾随空格、点等:exploit.php.
  • 尝试对点、正斜杠和反斜杠使用 URL 编码(或双 URL编码)。如果在验证文件扩展名时该值没有被解码,但后来在服务器端被解码,这也可以让您上传否则会被阻止的恶意文件:exploit%2Ephp
  • 在文件扩展名前添加分号或 URL 编码的空字节字符。如果验证是用 PHP 或 Java 等高级语言编写的,但服务器使用 C/C++中的低级函数处理文件,这可能会导致文件名结尾出现差异
  • 尝试使用多字节 unicode 字符,在 unicode 转换或规范化后可能会转换为空字节和点。xC0 x2E如果文件名被解析为UTF-8 字符串,则类似xC4 xAE或的序列xC0 xAE可能会被转换为x2E,但随后会在用于路径之前转换为 ASCII 字符。

第一步:登录网站,上传文件,该测试网站只允许上传图片类型的文件

第二步:打开Burp的代理历史记录中,找到POST /my-account/avatar用于提交文件上传的请求。将此发送到 Burp 的“重发器”。

第三步:我们修改filename参数的值,使用混淆文件扩展名绕过检测。

Content-Disposition: form-data; name="avatar"; filename="e.php%00.jpg"


第四步:发送请求,提示文件上传成功,接下来在代理历史记录中找到GET /files/avatars/文件名 请求,就可以查看返回的结果了。

这里之所以会返回“400”,是因为服务器端不存在e.php%00.jpg这个文件,经过编译是以e.php的形式存储在服务器,将它发送到“重发器”修改文件名,重发就可以查看返回的结果了。


提交密码,实验完成!

实验室:通过混淆文件扩展名上传 Web shell相关推荐

  1. web---文件上传漏洞之文件扩展名修改

    1. 打开所要上传文件的网站,并打开burp suite  如下所示操作.                                                        2. 点击 & ...

  2. ios文件扩展名_安卓JY Share | 还在为担心文件上传成为 base.apk,这个应用帮你解决...

    JYshare是一款提取手机里的软件并可以重命名的应用.不知道你们有没有这种烦恼,想要将应用分享到QQ群,文件名却是 base.apk ,只有下载后才能看到应用名称是什么,即使是私聊发送也会显示包名, ...

  3. 【Google Play】APK 扩展包 ( 2021年09月02日最新处理方案 | 制作 APK 扩展包 | 上传 APK 扩展包到 Google Play | APK 扩展文件上传时机 )

    文章目录 一.制作 APK 扩展包 二.上传 APK 和 主扩展文件到 Google Play 三.APK 扩展文件上传时机 一.制作 APK 扩展包 apk.txt 内容 : APK 扩展文件测试文 ...

  4. form表单刷新_《大胖 ? 小课》- 不用 js 实现文件无刷新上传

    这是<大胖小课>栏目的专题一<说说文件上传那些事儿>的第3节-<不用 js 实现文件无刷新上传> 专题已经更新章节: <大胖 • 小课>- 我是这样理解 ...

  5. formdata上传文件_大文件分片断点上传实现思路以及方案

    作者:yeyan1996| 来源:掘金https://juejin.im/post/5dff8a26e51d4558105420ed 前言 我在面试的时候确实被问到了这个问题,而且是一道在线 codi ...

  6. SpringBoot+El-upload实现上传文件到通用上传接口并返回文件全路径(若依前后端分离版源码分析)

    场景 SpringBoot+ElementUI实现通用文件下载请求(全流程图文详细教程): https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/deta ...

  7. java使用阿里云oss上传文件测试案例+上传策略包装类

    产品文档地址: https://help.aliyun.com/product/31815.html 产品购买地址: https://www.aliyun.com/search?scene=all&a ...

  8. php 获取文件扩展名的方法,PHP获取文件扩展名的4种方法,_PHP教程

    PHP获取文件扩展名的4种方法, 本文实例讲述了PHP获取文件扩展名的4种方法.分享给大家供大家参考,具体如下: $filename="123.jpg"; //方法一: funct ...

  9. upload-labs_pass10_点空点绕过_pass11_双写文件扩展名

    关于靶场说几点:单纯用phpstudy 可能无法复现所有的漏洞,而且phpstudy中的php可能是线程不安全的,所以建议大家在自己本机或者虚拟机的中亲自搭建一下apache和php的环境,便于复现u ...

最新文章

  1. Glide源码(基于4.8版本)解析
  2. python ide如何运行_如何在Ubuntu上安装IDLE Python IDE
  3. 受显微镜下线虫启发,MIT人工智能实验室推出“液态”神经网络
  4. python排序链表_合并K个排序链表
  5. 将JAVA编译为EXE的几种方法
  6. 牛客题霸 [判断二叉树是否对称] C++题解/答案
  7. leetcode1351. 统计有序矩阵中的负数(二分查找)
  8. linux下各种小命令
  9. 台式电脑桌面没有计算机,台式电脑开机后屏幕没显示怎么解决?
  10. 基金学习20190802
  11. MyBatis实现分页
  12. 关于rocketmq的配置启动
  13. FPGA与数字信号处理
  14. smb协议讲解_SMB协议原理抓包分析
  15. IPv6 寻址方式简介
  16. 先有鸡还是先有蛋的争论
  17. Perl变量作用域和自定义函数小结
  18. ubuntu常用命令大全(转)
  19. in和exist区别
  20. 开源地理信息系统软件

热门文章

  1. 2013年9—12月新托福考试终极报名指南!
  2. buaa oo-unit3
  3. JAVA通过Hutool解析CSV文件【导入即用,无需封装】
  4. Debian之安装完成后找不到命令解决办法
  5. 有1、2、3、4四个数字,可以组成多少个互不相同且无重复的三位数?都是多少?
  6. 线束音视频传输连接器FAKRA与HSD区别?
  7. mysql之自定义函数
  8. excel工作表保护
  9. 全球及中国集成电路(IC)制造行业运行前景与发展规划建议报告2022版
  10. android app 闪退的原因