title: CTFHub上传
url: 201.html
id: 201
categories:
文件绕过验证上传的几种方式
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2WYJ3HBE-1605864092929)(https://qn.orzchen.top/blog/20200601/JfX3jTCXpD3i.png)]
1.无验证 直接上传
2.JS前端验证文件类型 上传xx.php.jpg ,burp抓包以后改后缀 或者在浏览器中禁用JS
3.后端检测文件类型 检测content-type,抓包将content-type改为图片形式(即’image/png’等)
4.文件头检测判断文件类型 是使用getimagesize()函数来获取文件的MIME类型,此时检测的不是数据包中的content-type,而是图片的文件头,常见的图片文件头如下:
gif(GIF89a) : 47 49 46 38 39 61
jpg、jpeg : FF D8 FF
png : 89 50 4E 47 0D 0A
绕过方法: 当上传php文件时,可以使用winhex、010editor等十六进制处理工具,在数据最前面添加图片的文件头,从而绕过检测。 5.MIME验证文件类型 感觉和后端验证文件类型有点像,emmm。。。或者在Accept请求头报域中添加能上传的文件类型
超文本标记语言文本 .html,.html text/html
普通文本 .txt text/plain
RTF文本 .rtf application/rtf
GIF图形 .gif image/gif
JPEG图形 .ipeg,.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
6.上传.htaccess文件进行绕过(重写解析规则) 构造一个.htaccess文件上传,构成解析漏洞 如:
AddType application/x-httpd-php .jpg
上传文件以后,在上传以.jpg等图片文件格式的一句话木马,使用中国蚁剑直接连接。 列如: 在可以上传.htaccess文件时,先上传.htaccess文件,覆盖掉原先的.htaccess文件;再上传【evil.gif】文件。使用如下的.htaccess语句,即可将【evil.gif】文件以php脚本方式解析。
SetHandler application/x-httpd-php
7. 00截断 0x1 %00截断(GET请求) 构造绕过后端检测的截断。需要在存储路径的地方构造截断。存储路径后面要加一个php后缀的文件名,然后利用%00进行截断,这样上传文件的内容就存到了shell.php里,还要注意要用%00截断,由于内容在请求头中,直接在hex中改00会报bad request。 0x2 POST请求中:利用burp抓包,在hex中改00 如:上传shell.jpg 抓包在shell.jpg后加上一个空格或者其他的加.php 然后直接找到上传的位置访问shell.jpg.php(适用于没有后台测的)
8.后缀写法的绕过 0x1. 后缀名大小写绕过 用于只将小写的脚本后缀名(如php)过滤掉的场合; 例如:将Burpsuite截获的数据包中的文件名【evil.php】改为【evil.Php】 0_x2._ 双写后缀名绕过 用于只将文件后缀名,例如"php"字符串过滤的场合; 例如:上传时将Burpsuite截获的数据包中文件名【evil.php】改为【evil.pphphp】,那么过滤了第一个"php"字符串"后,开头的’p’和结尾的’hp’就组合又形成了【php】。 0x3. 特殊后缀名绕过 用于检测文件合法性的脚本有问题的场合; 例如:将Burpsuite截获的数据包中【evil.php】名字改为【evil.php6】,或加个空格改为【evil.php 】等。
9.Content-Type检测文件类型 0x1 当浏览器在上传文件到服务器的时候,服务器对说上传文件的Content-Type类型进行检测,如果是白名单允许的,则可以正常上传,否则上传失败。绕过Content–Type文件类型检测,就是用BurpSuite截取并修改数据包中文件的Content-Type类型(如改为:image/gif),使其符合白名单的规则,达到上传的目的。