文件上传靶场 upload-labs

文件上传靶场 upload-labs

upload-labs是一个使用php语言编写的,专门收集渗透测试和CTF中遇到的各种上传漏洞的靶场。旨在帮助大家对上传漏洞有一个全面的了解。目前一共20关,每一关都包含着不同上传方式。

Pass-01

上传一个php文件

image.png

弹窗

image.png

这一关是js限制,直接抓包png文件

image.png

把png改为php,再添加一句话木马内容

image.png

上传成功

image.png

Pass-02

第二关对http请求透的content-type类型做了校验,不是image/jpegimage/pngimage/gif就被pass掉

和第一关一样,上传一个png文件,然后改文件名还有内容就行了

image.png

上传成功

image.png

Pass-03

第三关

image.png

过滤了php这些文件,这一关没有content-type校验,但是php这些后缀被过滤了,然后还被强制转换小写

这一关是使用php的扩展后缀进行绕过,在实战中有的是可以php扩展后缀是可以直接解析的

image.png

上传成功

Pass-04

第四关

image.png

从第四关源码中可以看出,这里把很多php扩展后缀给过滤了

但是没过滤一个东西,就是.htaccess,这个文件是apache的分布式配置文件,负责给目录下的站点做配置,相当于一个局部配置文件

所以这里可以上传一个.htaccess

image.png

然后上传一个png文件

image.png

成功解析

Pass-05

第五关

image.png

这次过滤了.htaccess

但是没有强制转换成小写了

image.png

所以这次可以使用大写的PHP进行绕过

image.png

上传成功

image.png

Pass-06

第六关

image.png

这次没有首位去空的过滤,所以可以直接给php后缀加一个空格绕过

image.png

上传成功,需要在url后加一个空格的url编码才可以访问

image.png

Pass-07

第七关

image.png

这一关没有删除末尾的.所以给后缀加一个.即可绕过

image.png

上传成功

image.png

Pass-08

第八关

image.png

这一关比较特殊,是只有在windows下的环境才可以

¹这里没过滤掉::DATA,在windows中如果后缀名有::DATA,系统就会把::DATA当作文件流做处理,不会检查后缀,且保留::DATA前面的后缀名

我现在用的是linux的环境,所以不复现了,在这里说明一下解法,在windows下搭环境的小伙伴可以试试

如果有对此有疑问的话可以在评论区留言,我会单独开一个贴进行说明

Pass-09

第九关

image.png

²这一关也是一个需要在windows得环境下进行的,在windows里会把文件后缀里的空格给截断,空格之后的后缀就会被扔掉,所以可以这样去绕过

我现在用的是linux的环境,所以不复现了,在这里说明一下解法,在windows下搭环境的小伙伴可以试试

Pass-10

第十关

image.png

这一关比较简单粗暴,把黑名单里的所有后缀都使用str_ireplace函数替换空,但是这个函数只会替换一次

image.png

所以可以通过双写绕过

image.png

上传成功

image.png

Pass-11

第十一关

image.png

这一关就比较难一些,这里只允许白名单里的jpg,png,gif允许上传通过

会校验上传的后缀,不符合就不允许通过,不过这里出现了一些新东西,比如这个$_GET['save_path']的传递参数,说明上传的路径是我们可控的

image.png

所以可以使用%00在结尾做截断,绕过

image.png

不过这里上传失败了image.png

这是因为这里作者使用的php5.5版本做的docker(可能他忘了还有这一关?),这个操作需要在php5.3以下的版本中才可以生效,有兴趣的小伙伴可以自己搭建一下

附以前做的时候的截图

image46.png

image47.png

ok,绕过了下一关

Pass-12

第十二关

image.png

这一关和11关很像,只不过把$_GET替换成了$_POST

这里的过关方式也差不多,只不过是从url里添加%00改到在编辑报文的16进制

image.png

添加个00就行了

这一关和11关一样因为php版本不对原因没法复现

Pass-13

image.png

这里做了文件开头的两个字节检查,就是检查是否是图片开头的特征编码

gif的特征基本就是GIF编码在图片里添加即可

image.png

上传成功,最后再配合靶场自带的文件包含漏洞进行包含解析

image.png

Pass-14

第十四关

image.png

getimagesize获取图片大小

image_type_to_extension来验证是否是图片后缀和图片特征码

这一关和13关一样,上传一个gif文件,然后使用文件包含去包含执行就行了

image.png

上传成功

image.png

Pass-15

第十五关

image.png

解法与前两关相同

结语

后续四关看心情更新

¹,²注解

想要深入了解的,可以在评论区留言,我会单独开贴说明