基于本地验证文件是否符合要求:直接将JavaScript禁用。或者burp抓包后修改后缀,将php文件后缀现先改成jpg,burp抓包后后缀改回php。php
burp抓包将Content-type类型修改成image/jpeg,image/png等
html
phtml php3 php4 php5 PHP phtm前端
例如phtml php3 php4 php5 PHP phtm
这些后缀名首先得让服务器支持这些解析为php脚本运行,httpd.conf配置文件中能够查看设置。浏览器
从图中能够看到,我安装的Apache默认解析php和phtm的,若是黑名单并无过滤phtm,就能够上传phtm的木马。服务器
例如phP,黑名单上不存在的话就能够绕过,过滤严格的话通常会用个strtolower()把后缀全变为小写,那个时候就不行了。app
构造图片马,或者用winhex在图片后边添加上木马的内容,一个原理。ide
例如<?php函数
<script language="php">eval($_POST['cmd']);</script>
没啥用,通常上传的木马超不过那个大小。编码
计算机处理文件遇到0x00(表明NULL)则会自动截断后边的内容,而较低版本的php就会由于这个出现漏洞。
通常分为两种那个状况:url
burp抓包在上传路径后边加上muma.php%00,而后将%00进行url编码(crtl+shift+u),(浏览器还要进行url解码,因此先编码后解码,保证原来的字符不变)上传。
文件名改成muma.php+.jpg,这个+ 其实就是个标识做用,改别的字符也行。burp抓包后,hex打开,将+的数值改成00,实际上表明就是0x00.
上传。不过00截断很旧了已经,如今基本找不到这种漏洞了。
Apache才有效的一个配置文件,直接配置Apache达到随心所欲的目的,默认开启。若是不开启,找到httpd.conf配置文件:
Options FollowSymLinks
AllowOverride None
改成:
Options FollowSymLinks
AllowOverride All
即完成了开启。
在有的时候黑名单过滤不严格,就会漏掉过滤.htaccess文件 。
这段代码就是让以ma.jpg的文件以php文件执行。上传图片后,无论图片名字有没有被自动重命名,访问的图片的地址看最后会有服务器上图片的名字,而后用.htaccess进行配置便可。
也能够直接Addtype application/x-httpd-php .jpg
.全部的jpg都会以php脚本运行。
最难绕过的方法。绕过方法请参考其余方法。
若是对文件的内容例如<?php用str_replace()使其变为空,就能够构造特殊的内容例如<?p<?phphp,过滤后就变为了<?php,达到了绕过的目的。
不过我以为没啥用,他要是循环过滤那不就完了,写代码的时候确定不会只给你过滤一次啊。