- 前端js检测
这种是最简单绕过的因为只检测前端所以这种我们只需要在传输的时候抓包然后将文件的格式更改为需要解析的文件格式。
- 服务端MIME检测
这种就抓包然后改一下content-type的值就可以绕过了。
常见的MIME类型:
Html文本.html text/html`` ``普通文本.txt text/plain`` ``RTF文本 .rtf text/rtf`` ``GIF图形 .gif image/gif`` ``JPEG图形 .jpg image/jpg`` ``MPEG文件 .mpg video/mpeg`` ``TAR文件.tar application/x-tar
- 文件内容检测
比如说对文件的头进行检测看是不是要上传的格式。这种就只需要在文件头的部分加上允许格式的头就行了。
- 利用windows特性
在window的时候如果文件名+":: D A T A " 会把 : : DATA"会把:: DATA"会把::DATA之后的数据当成文件流处理,不会检测后缀名,且保持::$DATA之前的文件名,他的目的就是不检查后缀名。
- 二次渲染
这个是上传完shell后就会发现连接不上,下载下来发现文件内容被损坏了,像这种咱就只需要上传一张图片上去然后再下载,将这张图片跟之前的图片进行对比。
找到未被修改的地方然后在哪里写入一句话就可以了。
- 黑名单限制
这种一般是禁止了常见的可解析的格式,但是咱们可以用别的格式来进行解析或者大小写绕过。
ASP:*.cer、*.asa、*.cdx。(iis6.0默认解析)
JSP:*.jspx
PHP:*.phtml、*.php3
- 绕waf
这个笔者本来是不打算写的,但是后来想想说不定有运气好的碰到那种老waf的。现在这些新waf就是跑脏字无脑跑。跑上他个几万行几十万行就能绕过。(不过这个也不多了)
再就是老waf
可以双写后缀名,例:phphpp(有些黑名单会把php给转成空)
双写filename,例:filename=“1.jpg”;filename=“1.php”
双写Content-Disposition:
去掉引号不进行匹配
目前就先整理这些,本人水平实在有限碰到的不多如果有什么笔者漏掉的就希望大家私信笔者,笔者在后续也会在补充的。(会填坑的)