文件上传

pumpk1n 发布于 2026-04-17 147 次阅读


绕过验证

前端绕过

javascript绕过,及js绕过

1.在网站开发者模式中禁用js(不推荐)

  • 可能会把正常需要的JS禁用,导致上传失败

2.修改源码进行上传 直接复制网站源码到本地中,然后删除上传相关的JS,然后在上传区添加

action="目标地址"

然后在本地上传到对方网站中即可

后端绕过

实战中我们可以使用fuzz,通过抓包尝试绕过

黑名单

  • 特殊解析后缀:php3 php5 phtml
  • .htaccess解析:php的一个配置文件,可以先上传.htaccess,在上传木马
    <FilesMatch "\.jpg">     #这里写文件名还是后缀名都可以,匹配到就会转变
    SetHandler application/x-httpd-php
    </FilesMatch>
  • 大小写绕过:.PHp .Phtml
  • 点绕过:抓包,在文件后缀最后加上一个点
  • 空格绕过:抓包,在文件后缀最后加上一个空格
  • ::$DATA绕过:抓包,在文件后缀最后加上::$DATA
  • 配合解析漏洞
  • 双写后缀绕过:.pphphp

    白名单

  • MIME类型:抓包修改类型
  • %00截断:抓包修改保存地址,然后再最后加上%00 注意:get可以自动解码,post需要人为解码
  • 0x00截断
  • 0x0a截断

    内容及其他

  • 文件头监测:GIF89a,塒NG
  • 二次渲染
  • 条件竞争:抓包然后intruder爆破,然后浏览器访问
  • 突破getmagesize:用于获取图像信息
  • 突破exif_imagetype:用于获取图片类型

图片码制作

copy /b 1.jpg + 1.php/a = muma.png

常见中间件解析漏洞

Apache

解析漏洞

解释: x.php.xxx.yyy 识别最后的yyy 如果不识别的 向前解析 直到识别

利用场景: 如果对方中间件apache属于低版本,我们可以利用文件上传,上传一个不识别的文件后缀,利用解析漏洞规则成功解析文件,其中后门代码被触发

Nginx

解析漏洞

解释: 制作图片马,然后上传,访问时在后面加上/.php 解析时会被当成php文件执行

利用场景: 适用于Nginx低版本和IIS7.5,直接访问logo.jpg/.php,任意图片后面都可以,如果是访问错误,就是没有这个漏洞,如果是乱码,就是有该漏洞

文件名逻辑漏洞

解释: 上传图片文件后抓包,修改为jpg\x20,上传成功后,再次抓包,把文件名修改为jpg\x20\x00.php即可

利用场景: 适用于Nginx 0.8.41~1.4.3/1.5.0~1.5.7,上传文件时加上一个空格,访问图片加上%20,如果访问成功则有该漏洞

文件上传绕过waf

哪些参数可以修改

  • Content-Disposition: 一般可更改
  • name: 表单参数值,不能更改
  • filename :文件名,可以更改
  • Content-Type:文件MIME,视情况更改

常见绕过方法 1.数据溢出-防匹配(xxx.. .) 在表单中加入一些垃圾数据,数据溢出可以防止文件后缀进行匹配

2.符号变异-防匹配('" ;) 只写一个闭合符号,或者在闭合符号后面写文件名,导致无法匹配"x/php或者"a"x.php

3.数据截断-防匹配(%00 ;换行) 上传文件抓包改为a.jpg;.php或者a.php%00.jpg(已失效)

4.重复数据-防匹配(参数多次) 上传文件时多写几遍filename="y.jpg",最后再写filename="y.php",他会识别最后一个后缀,类似于垃圾数据

此作者没有提供个人介绍。
最后更新于 2026-05-20