2.上传文件

余生颓废 提交于 2020-03-10 11:42:50

上传文件

1. 客户端校验(本地)——JavaScript校验

  • 原理:本地JavaScript进行校验

  • 绕过方法:

    • 1.抓包解包
    • 2.禁用JavaScript

2.服务器端校验——content-type校验

  • 原理:MIME类型检测
  • 绕过方法:
    • 1.修改数据包
      • gif——image/gif
      • png——image/png
      • jpg——image/jpeg
      • js ——text/javascript
      • htm——text/html
      • html——text/html
    • 2.改文件名后上传抓包后再改回文件名
    • 3.上传正常文件修改文件内容
    • 目的:构造包使content-type 正确

3.服务端校验——后缀名黑名单校验

  • 原理:开发人员禁止了某些后缀名
  • 绕过:
    • 1.大小写绕过,例如:Php、PhP
    • 2.利用黑名单没有的,但是能被中间件解析的后缀名,例如:PHP、php3、php4、php5、pht、php7、phtml、phps
    • Apache的配置文件正则规则 .+\.ph(p[3457]?|t|tml)$
    • 3.上传Apache的.htaccess 文件 ,与php文件在同一目录
      • <FilesMatch "php7.jpg">sethandler application/x-httpd-php</FilesMatch>
    • 4.使用00截断:使用bp的hex修改0x00
      • 基于一个组合逻辑漏洞造成的,通常存在于构造上传文件路径的时候
    • 5.超长文件名截断上传Windows: 258 byte Linux: 4096 byte

4.服务端校验——后缀名白名单校验

  • 原理:猜测是因为Apache服务器识别文件名时是从后向前推

5.服务端校验——内容头校验

  • 原理:文件头 getimagesize()
  • 绕过:gif89a<?php phpinfo();?>

6.竞争上传

  • 情景:文件上传后,检测是否合法,不合法就删除,所以意味着文件在服务器上存在过,只是存在时间短,理论上是能访问的。
  • 绕过:使用爆破,一直发,访问速度大于他的删除速度。生成小文件。。。
  • 趁代码不注意,赶紧访问!!!
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!