2.2 白名单
顾名思义,白名单就是服务端明确规定上传格式,比如JPG,GIF,PNG等格式,除此之外其他类型无法上传。
绕过
MIME绕过:
通过检查http中包含的Content-Type字段中的值来判断上传文件是否合法,因此可以将此字段改成允许上传的。
例2:
来到第二关,还是限制只能上传GIF,JPG,PNG格式,但是在禁用JS上传已经不管用了,因为对方用了MIME验证。
打开burp抓包,找到Content-Type字段,可以发现其与代码中允许的字段不一致,所以将Content-Type字段改成代码中允许的字段类型提交即可。
%00空字符截断:
在文件上传后验证文件扩展名往本地保存的时候,%00就会形成一个null字符,截断文件名,只保存%00之前的内容。
注:只用于php5.3以下版本,并且要在php扩展设置>>参数开关设置中把magic_quotes_gpc关闭。
例3:
修改路径值,添加%00,然后提交。
2.3黑名单
与白名单相反,通过限制某些文件格式,使其无法上传之服务端。
绕过
.HTACCESS绕过:
只存在于APACHE中
主要功能:URL重写、自定义错误页面、MIME类型配置以及访问权限控制等。主要体现在伪静态的应用、图片防盗链、自定义404错误页面、阻止/允许特定IP/IP段、目录浏览与主页、禁止访问指定文件类型、文件密码保护等。
简而言之,在httpd.conf文件中有对文件上传的过滤规则,我们通过给目目录下上传一个重新定义解析规则的.htaccess文件,此时生效的过滤规则就会替换原来http.conf中的规则。
例4:
1.上传一个.htaccess文件
文件内容为:将xxx.jpg文件解析为PHP
<FilesMatch "xxx.jpg">
SetHandler application/x-httpd-php
</FilesMatch>
2.然后创建xxx.jpg文件插入一句话木马,然后访问图片链接。
::$DATA绕过:
在 Window