0x01 上传漏洞之客户端检测

客户端检测绕过:前端js检测
第一步:
先判断是前端检测还是后端检测,如果是前端检测,就会弹出个会话框,禁止上传什么。
方法1 : 禁用火狐浏览器的 js 功能,绕过前端的 js 限制
文件上传之白名单绕过方式示例 - 图1

方法2 :直接修改前端html代码,删除限制代码
文件上传之白名单绕过方式示例 - 图2

方法三:把php文件后缀改为 jpg, 用Burp抓包后,改为正确的php后缀
文件上传之白名单绕过方式示例 - 图3

0x02 上传漏洞之服务端类型检测绕过

服务端检测绕过:mime类型检测
MIME(Multipurpose Internet Mail Extensions)多用途互联网邮件扩展类型。是设定某种扩展名文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开。多用于指定一些客户端自定义文件名,以及一些媒体文件打开方式。
文件上传之白名单绕过方式示例 - 图4

  • 如果服务端代码是通过Content-Type的值来判断文件的类型,那么就存在被绕过的可能,因为content-Type的值是通过客户端来传递的,是可以任意修改的。
  • 练习第二关

    1. 也可以向第一关一样,修改文件的后缀名,为允许上传的后缀名,抓包在删除文件的后缀名<br />![](https://cdn.nlark.com/yuque/0/2021/png/1442084/1615960033402-2237cf69-b6d4-4c5f-b5e0-ee0abdee3fd2.png#align=left&display=inline&height=296&margin=%5Bobject%20Object%5D&originHeight=544&originWidth=970&size=0&status=done&style=none&width=527)<br />![](https://cdn.nlark.com/yuque/0/2021/png/1442084/1615960033404-a5d0f523-1140-4247-954e-e705dc655b66.png#align=left&display=inline&height=292&margin=%5Bobject%20Object%5D&originHeight=341&originWidth=509&size=0&status=done&style=none&width=436)

    0x03 上传漏洞之00截断原理与利用

    00截断原理:在url中%00表示ascll码中的0 ,而ascii中0作为特殊字符保留,表示字符串结束,所以当url中出现%00时就会认为读取已结束

截断类型:由于00代表结束符,所以会把00后面的所有字符删除
截断条件:PHP版本小于5.3.4,php的magic_quotes_gpc为OFF状态

00截断一般是两个点:1.路径path可控 2. 文件名白名单匹配
一般是会把上传的文件从临时路径移动到path,理论上path构造类似 uploads/test.php%00.jpg 的话,直接就写进test.php了。

  • 练习十一、
  • 十二关

文件上传之白名单绕过方式示例 - 图5
空格是20, 把20改成00
文件上传之白名单绕过方式示例 - 图6

文件上传之白名单绕过方式示例 - 图7