文件上传2

 

目录

文件上传绕过的方式

2.MIME验证

概念

常见的 MIME 类型:

MIME-Type检测原理

3.绕过黑名单验证

文件后缀名验证

大小写绕过

空格绕过

.绕过

特殊符号绕过

路径拼接绕过

双写绕过

4.白名单绕过

00截断

webshell图片


文件上传绕过的方式

  1. 绕过JS验证
  2. MIME验证
  3. 黑名单绕过
  4. 绕过白名单

2.MIME验证

概念
MIME(Multipurpose Internet Mail Extensions)多用途互联网邮件扩展类型。是设定某种扩展名的文件一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动发使用指定应用程序来打开。
常见的 MIME 类型:
超文本标记语言文本 .html text/html
xml 文档 .xml text/xml
普通文本 .txt text/plain
RTF 文本 .rtf application/rtf
PDF 文档 .pdf application/pdf
Microsoft Word 文件 .word application/msword
PNG 图像 .png image/png
GIF 图形 .gif image/gif
JPEG 图形 .jpeg,.jpg image/jpeg
au 声音文件 .au audio/basic
MIDI 音乐文件 mid,.midi audio/midi,audio/x-midi
RealAudio 音乐文件 .ra, .ram audio/x-pn-realaudio
MPEG 文件 .mpg,.mpeg video/mpeg
AVI 文件 .avi video/x-msvideo
GZIP 文件 .gz application/x-gzip
TAR 文件 .tar application/x-tar
任意的二进制数据 application/octet-stream
MIME-Type检测原理
服务端MIMIE类型检测是通过检查http包的Content-Type字段做了中的值来判断上传文件是否合法的。部分网站只对文件类型做了判断,抓包修改文件类型可绕过限制。

3.绕过黑名单验证

文件后缀名验证

白名单验证:只针对白名单中有的后缀名,文件才能上传成功。

黑名单验证:只针对黑名单中有的后缀名,文件才能上传成功。

前提条件:修改Apache的httpd-conf文件。> AddType application/x-httpd-php .php .phtml .phps .php5 .pht  //将以上文件均解析为.php

.htaccess文件:是apache服务器中的一个配置文件,负责相关目录下的配置。通过htaccess文件,可以实现:网页301重定向、自定义404错误页面、改变文件扩展名、配置默认文档等功能。

.htaccess文件内容(使用此文件绕过时,需要先上传文件,再上传木马文件。)

<FilesMatch "1.jpg">

SetHandler application/x-httpd-php

</FilesMatch>

在apache中启动此文件时需要在http-conf中设置AllowOverride All
大小写绕过
在windows系统中文件名大小写不敏感,在Linux系统中文件名的大小写敏感。
空格绕过
Windows系统中,文件名空格会作为空处理,程序中的检测代码不能自动删除空格。
.绕过

 Windows系统中,文件后缀名中的.会被自动删除。

特殊符号绕过
Windows系统下,如果上传的文件名中test.php::$DATA会在服务器上生成一个test.php的文件,其中内容和所上传文件内容相同,并被解析。
路径拼接绕过
没有对文件名进行重命名的情况下,用户可以自定义文件名并在服务器中上传新建。
双写绕过
代码中只对黑名单内容进行空替换,由于只替换一次,可双写绕过。
str_ireplace() 函数替换字符串中的一些字符(不区分大小写)。
该函数必须遵循下列规则:
如果搜索的字符串是一个数组,那么它将返回一个数组。
如果搜索的字符串是一个数组,那么它将对数组中的每个元素进行查找和替换。
如果同时需要对数组进行查找和替换,并且需要执行替换的元素少于查找到的元素的数量,那么多余元
素将用空字符串进行替换
如果是对一个数组进行查找,但只对一个字符串进行替换,那么替代字符串将对所有查找到的值起作用。
注释:该函数不区分大小写。请使用 str_replace() 函数来执行区分大小写的搜索。
注释:该函数是二进制安全的。

4.白名单绕过

00截断
0x00是十六进制表示方法,是ascii码为0的字符,在有些函数处理时,会把这个字符当做结束符。
前提条件
php<5.3.4、magic_quotes_gpc 为 off 状态;
有时数据包中必须含有上传文件后的目录才可使用该方法。
GET型提交的内容会被自动进行URL解码。(一定要关闭GPC,否则无法成功。)
post型%00不会被自动解码,需要在16进制中进行修改00。
webshell图片
制作:
1.php<?php eval($_POST[a]);?>
cmd  >copy 2.jpg/b+1.php 1.jpg
找到 include.php 的文件路径
构造路径访问我们的上传的图片
文件包含漏洞代码分析
在PHP中,使用include、require、include_once、require_once函数包含的文件都会被当作PHP代码执行,
无论文件的名称是什么,只要符合文件内容符合PHP代码规范,都会被当作PHP代码执行。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值