Upload-Labs
感谢大佬们做的靶场,学到了不少东西。


环境搭建
提供了Windows集成和Linux Docker两种快速搭建方式,直接Docker起了,Docker yyds。
pass-01
前端认证,抓包修改后缀即可。
pass-02
抓包修改Content-Type
pass-03
基于黑名单的匹配,可以用phtml,php3,php4, php5等文件进行绕过。
基于此类的上传绕过需要配置文件httpd.conf一定的解析,如果没有下面这句话
就算上传文件成功也不会被解析,更别说shell了。
pass-04
很憨的黑名单,过滤了大小写,还有很多没过滤,例如.ini,.htaccess等。
来一发htaccess组合拳。
.htaccess
shell.jpg
pass-05
多过滤了.htaccess,但是减少了大小写转换:
利用不在黑名单里的.PhP,.Php文件后缀上传即可。
pass-06
少了首尾去空
在后缀加空格绕过
pass-07
少了去掉点后缀
上传加.的后缀文件绕过。
pass-08
这关少了
看下::$DATA是个什么东西,这道题利用了Windows下NTFS一个特性,DATA为文件的一个属性,用来存储文件的数据流。当访问shell.php::DATA时,请求的是shell.php本身的数据;如果该文件本身包含其他流数据,例如shell.php:gaga.php::$DATA,则请求的是shell.php的流数据gaga.php的流数据的内容。
上传文件绕过。

pass-09
pass-05 -> pass-08分别测试了删掉四种waf情况下如何绕过过滤,而pass-09就全部waf齐上了。
首尾去空在最后执行,删除末尾点的操作先于其执行,上传
pass-10
没啥好说的,双写绕过。
pass-11
这题的路径可控,拼接文件路径,但是后缀名有白名单检测。
这题可以用%00截断来绕过:php解析器遇到%00时,会当做数据流的结束标志,当$_GET['save_path']为shell.php%00时,会截断文件路径,称为新的文件名。
使用%00截断有两个限制条件
php版本小于5.3.4
php的magic_quotes_gpc为OFF状态
pass-12
跟上题差不多,但是数据提交方式变成了POST方式。
由于POST方式不会像GET方式一样,提交经过URL编码,这里需要手动修改二进制流。
pass-13、pass-14、pass15
涉及到文件头混淆,需要使用三种文件头上传文件。
GIF
JPG
PNG
pass-14
pass-16
具体可以参考这篇文章:upload-labs之pass 16详细分析
GIF
GIF文件直接在GIF文件中段没有被二次渲染的部分插入代码上传即可。
Last updated