文件上传靶场 upload-labs
文件上传靶场 upload-labs
upload-labs
是一个使用php
语言编写的,专门收集渗透测试和CTF中遇到的各种上传漏洞的靶场。旨在帮助大家对上传漏洞有一个全面的了解。目前一共20关,每一关都包含着不同上传方式。
Pass-01
上传一个php文件
弹窗
这一关是js限制,直接抓包png文件
把png改为php,再添加一句话木马内容
上传成功
Pass-02
第二关对http请求透的content-type类型做了校验,不是image/jpeg
、image/png
、image/gif
就被pass掉
和第一关一样,上传一个png文件,然后改文件名还有内容就行了
上传成功
Pass-03
第三关
过滤了php这些文件,这一关没有content-type
校验,但是php这些后缀被过滤了,然后还被强制转换小写
这一关是使用php的扩展后缀进行绕过,在实战中有的是可以php扩展后缀是可以直接解析的
上传成功
Pass-04
第四关
从第四关源码中可以看出,这里把很多php扩展后缀给过滤了
但是没过滤一个东西,就是.htaccess
,这个文件是apache的分布式配置文件,负责给目录下的站点做配置,相当于一个局部配置文件
所以这里可以上传一个.htaccess
然后上传一个png文件
成功解析
Pass-05
第五关
这次过滤了.htaccess
但是没有强制转换成小写了
所以这次可以使用大写的PHP
进行绕过
上传成功
Pass-06
第六关
这次没有首位去空的过滤,所以可以直接给php后缀加一个空格绕过
上传成功,需要在url后加一个空格的url编码才可以访问
Pass-07
第七关
这一关没有删除末尾的.
所以给后缀加一个.
即可绕过
上传成功
Pass-08
第八关
这一关比较特殊,是只有在windows下的环境才可以
¹这里没过滤掉::DATA
,在windows中如果后缀名有::DATA
,系统就会把::DATA
当作文件流做处理,不会检查后缀,且保留::DATA
前面的后缀名
我现在用的是linux的环境,所以不复现了,在这里说明一下解法,在windows下搭环境的小伙伴可以试试
如果有对此有疑问的话可以在评论区留言,我会单独开一个贴进行说明
Pass-09
第九关
²这一关也是一个需要在windows得环境下进行的,在windows里会把文件后缀里的空格给截断,空格之后的后缀就会被扔掉,所以可以这样去绕过
我现在用的是linux的环境,所以不复现了,在这里说明一下解法,在windows下搭环境的小伙伴可以试试
Pass-10
第十关
这一关比较简单粗暴,把黑名单里的所有后缀都使用str_ireplace
函数替换空,但是这个函数只会替换一次
所以可以通过双写绕过
上传成功
Pass-11
第十一关
这一关就比较难一些,这里只允许白名单里的jpg,png,gif
允许上传通过
会校验上传的后缀,不符合就不允许通过,不过这里出现了一些新东西,比如这个$_GET['save_path']
的传递参数,说明上传的路径是我们可控的
所以可以使用%00
在结尾做截断,绕过
不过这里上传失败了
这是因为这里作者使用的php5.5版本做的docker(可能他忘了还有这一关?),这个操作需要在php5.3以下的版本中才可以生效,有兴趣的小伙伴可以自己搭建一下
附以前做的时候的截图
ok,绕过了下一关
Pass-12
第十二关
这一关和11关很像,只不过把$_GET
替换成了$_POST
这里的过关方式也差不多,只不过是从url里添加%00
改到在编辑报文的16进制
添加个00就行了
这一关和11关一样因为php版本不对原因没法复现
Pass-13
这里做了文件开头的两个字节检查,就是检查是否是图片开头的特征编码
gif的特征基本就是GIF
编码在图片里添加即可
上传成功,最后再配合靶场自带的文件包含漏洞进行包含解析
Pass-14
第十四关
getimagesize
获取图片大小
image_type_to_extension
来验证是否是图片后缀和图片特征码
这一关和13关一样,上传一个gif文件,然后使用文件包含去包含执行就行了
上传成功
Pass-15
第十五关
解法与前两关相同
结语
后续四关看心情更新
¹,²注解
想要深入了解的,可以在评论区留言,我会单独开贴说明