#.htaccess文件突破黑名单(上传格式限制)

1.自定义.htaccess上传

1
2
3
<FileMatch “test.jpg”>
SetHandler application/x-httpd-php
</FileMatch>

2.同目录下上传保存为jpg格式的一句话,成功绕过限制

#php流封装绕过截断

例:设文件包含代码为:

1
2
3
<?php 
$a = $_GET['file'];
include $a.'.html.php';

%00无法截断,只能包含xxxx.html.php
1.新建一个hello.html.php,内容为phpinfo();
2.压缩成zip
3.访问网址[http://localhost/test/blog.php?file=zip://test.zip%23hello],成功包含压缩文件内的hello.html.php

#0x00截断

0x00截断,00截断是将上传文件名或路径名中使用ascll码值为0的字符(也就是null)来进行截断
1.BP抓包
2.在/Upload/后面加一个空格,点开hex,将其对应的20改成00即可,就可以绕过后缀名的过滤,从而得到webshell

#%00截断

%00一般用在URL中用于截断url来进行文件包含
1.BP抓包
2.在filename后面加%00.jpg,先绕过后缀上传,然后利用burp的urldecode功能,其实和/00截断将hex20变成00一样,效果一样,两种方法都可以拿webshell

#竞争上传

1.上传一个包含创建webshell的脚本,在文件解压到被删除到时间差内访问webshell
2.构造压缩文件,成功解压部分文件,在解压未未完成时出错,不执行删除程序
a)上传含pngphp文件的压缩包,在上传时抓包。使用”Paste from file“将压缩包放入请求数据包中,并修改最后一个PHP文件的hex值=>成功解压部分并查看被解压的目录
b)发现未指定解压目录,构造含有pngphp文件的压缩包,用notepad++将xxx.php修改为../xxx.php,通过BP上传,成功在上级目录下创建一个xxx.php