这篇文章最后更新于 天前,文中描述的信息可能已经过时,请多加查证后再作参考。
介绍
upload-labs
是一个使用 php 语言编写的,专门收集渗透测试和 CTF 中遇到的各种上传漏洞的靶场。
下载链接:github.com/c0ny1/upload-labs
在本博客中使用到的工具:
第六题
请先确认您的 Pass-6 点击查看源码后源码中包含以下这段代码与否,如果与您的部分源码不一致,请尝试先查看其它题的题解。
1 | $deny_ext = array(".php",".php5",".php4",".php3",".php2",".html",".htm",".phtml",".pht",".pHp",".pHp5",".pHp4",".pHp3",".pHp2",".Html",".Htm",".pHtml",".jsp",".jspa",".jspx",".jsw",".jsv",".jspf",".jtml",".jSp",".jSpx",".jSpa",".jSw",".jSv",".jSpf",".jHtml",".asp",".aspx",".asa",".asax",".ascx",".ashx",".asmx",".cer",".aSp",".aSpx",".aSa",".aSax",".aScx",".aShx",".aSmx",".cEr",".sWf",".swf",".htaccess",".ini"); |
如上,与第五题的区别是这里没有将文件名转换为小写,所以在将文件名改为不过滤的文件名扩展名即可成功上传,之后就可以从返回的数据中获取文件名,如下:
第七题
本题与第五题的区别是没有去空格,在文件名末尾加上空格即可,从返回的链接中获取文件地址。
第八题
本题没有删除文件名末尾的点,在文件名结尾加上 .
即可。
第九题
本题没有删除 ::$DATA
,在文件名结尾加上 ::$DATA
即可。
在 Windows 环境下如果文件名的末尾存在 ::$DATA
,将会把::$DATA
之后的数据当作文件流处理,本题就是利用这个特点绕过了文件上传检测。 1
第十题
和第五题的源码完全一致,解法参见上一篇博客。
第十一题
本题是在文件名中不区分大小写地删除敏感扩展名,但只从头到尾删除了一次,所以可以加两个敏感扩展名绕过,如下:
第十二题
本题使用了
%00
截断这一操作系统层的漏洞,但该漏洞需要 php 版本小于 5.3.4 且 php 的magic_quotes_gpc
为OFF
状态才能生效2 。所以有一定可能不成功。
由于本题的上传路径可以通过 HTTP GET 的参数控制,所以可以使用 %00
截断绕过,如下:
之后直接访问截断前的路径 ./upload/some.php
即可。
第十三题
本题使用了
%00
截断这一操作系统层的漏洞,但该漏洞需要 php 版本小于 5.3.4 且 php 的magic_quotes_gpc
为OFF
状态才能生效2 。所以有一定可能不成功。
由于本题的上传路径是通过 HTTP POST 的参数控制的,并不会像上一题一样自动解码,所以需要我们自己把路径的最后一位改成 00
,在 BurpSuite 中的操作如下:
把如上的 40
改为 00
后发送,之后直接访问截断前的路径 ./upload/some.php
即可。
参考资料
* 目前本文并未直接复制以下文章的内容
本文作者:Henrize Kim
文章链接: https://henrize.kim/article/bdc77d9fbdc6/
本文使用 CC BY-NC-SA 3.0 协议进行许可,使用时请注意遵守协议。