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