文章目录

上传姿势总结:
1)改后缀名绕过
2)Content-Type绕过
3)本地文件包含
4)远程文件包含
5)httpd.conf黑名单绕过
6)htaccess绕过
7)大小写绕过
8)空格绕过
9)点绕过
10)特殊符号::$DATA绕过
11). .绕过
12)多写绕过(多写php)
13)%00截断目录绕过
14)16进制00截断目录
15)本地文件包含+文件头绕过
16)本地文件包含+图片马绕过
17)条件竞争绕过(二次渲染)
18)条件竞争+白名单上传7z+脚本执行
19)重命名数组法绕过
1.Pass-01
改后缀名绕过
只能上传图片,先上传一个jpg格式的图片,然后抓包改格式
改成3.php,以及Content-Type
Content-Type: application/octet-stream
上传成功后点击图片位置右键获取链接
得到http://127.0.0.1:9005/upload/3.jpg
改成php格式的就是payload
http://127.0.0.1:9005/upload/3.php
2.Pass-02
Content-Type绕过
使用上一关的方法还是提示报错,说明存在过滤
这里的办法是使用重复类型Content-Type
即既然它以Content-Type为准,那么我就先给他一个正确的Content-Type,然后再改后缀为.php
发现上传成功
getshell成功
3.Pass-03
方法一:本地文件包含
直接上传非php文件,使用本地包含文件getshell
远程文件包含注意点
1.在php.ini中需要allow_url_include = on和allow_url_fopen= on
2.所需的远程文件后缀不能与目标服务器的语言相同,如目标服务器解析PHP代码,则远程文件后缀不能为.php。
比如远程服务上有如下两个文件
我们发现php格式的链接不了,而txt格式的反而可以
方法二:httpd.conf黑名单绕过
黑名单规则不严谨,在某些特定环境中某些特殊后缀仍会被当作php文件解析
php、php2、php3、php4、php5、php6、php7、pht、phtm、phtml
但是以上方法对nts版本的apache无效,需使用类似如下的版本
然后在httd.conf新增类型,再重启服务就可以解析php4了
4.Pass-04
htaccess绕过
但是看来被过滤了