最近在刷一个靶场,前情提要:
1、《上传靶场upload-labs搭建及使用》
2、《upload-labs靶场1-5关》
今天我们来通关upload-labs靶场的6-10关。
大概一看,代码和第五关相差不大,我们使用工具Beyond Compare看一下具体的区别。
Beyond Compare 是一款不可多得的专业级的文件夹和文件对比工具。使用他可以很方便的对比出两个文件夹或者文件的不同之处。
左边是pass-05,右边是pass-06。可以看到第6关相比第5关的区别:
至于黑名单的具体变化,就是多加了一个.ini后缀。
至此,第五关用到的所有方法:多后缀解析漏洞、点空格点绕过、.user.ini绕过就都不能用了。前两个是因为上传后文件重命名,有效的后缀不会被保留。最后一个是因为黑名单覆盖到了.ini后缀。
不过根据变化很明显可以看出,删除了转换为小写的代码是关键。不再强制把后缀转换为小写,意味着大小写混淆绕过成为了可能。仔细观察黑名单,发现没有过滤.PhP后缀。
上传test.PhP文件成功,因为windows的特性:文件名不区分大小写,所以PhP后缀等同于php后缀一样可以解析。
看代码和之前差别仍然不是很大,那还是直接用Beyond Compare把源码和第六关的做个比较。
左边是pass-06,右边是pass-07。很容易看到区别是第七关补上了后缀转小写的代码,但是去掉了首尾去空格的函数。
直接在php后缀后面加一个空格就可以绕过黑名单了。因为windows的特性:文件名会自动去掉最后的点和空格。所以实际上传的就是php文件。
直接比较吧,左边是pass-07,右边是pass-08。
可以看到第8关补上了首尾去空的函数,去掉了删除文件名末尾的点的函数(在common.php中定义)。同时不再重命名上传的文件。
根据变化很容易想到在文件名末尾加点绕过。同样是因为windows特性,这里不再赘诉。利用的时候直接访问http://127.0.0.1/upload/test.php就行。
另外因为不再重命名,第四关使用的apache多后缀解析漏洞也可以用了。
第九关补上了末尾去点的函数,同时将文件重命名。这样就解决了文件末尾加点、多后缀解析和点空格点绕过的方法。
但是第九关去掉了末尾去除::$DATA字符串的函数。::$DATA是NTFS文件系统的存储数据流的一个属性。windows会自动去除文件名中的::$DATA。
所以将其加到文件末尾可绕过后缀黑名单检测,实际上传的就是php文件。
我又把10和第5关比较了一下,发现区别仅仅是后缀黑名单中比第5关多了个.ini。
那直接用第五关的其他方法:点空格点绕过、多后缀解析绕过就能通关。
鉴于删除文件末尾的点的函数是作者自己写的,多后缀解析绕过的方法更加通用一些,所以我认为这应该是作者的本意。
在手里有完整源码的情况下,可以直接使用Beyond Compare工具对比区别,通关这几关会很容易。每次通关都可以学到作者融入关卡的一个新tip,与其说是在挑战不如说是在学习。
想起了以前练习ctf时总结的经验:不会的题是真不会,有条件赶紧去看大佬的wp,看的越多学的越快,一直死磕反而可能什么都学不到。
顺便一提,windows的feature好多。看起来真的没有linux安全。
喵,点个赞再走吧~
原文始发于微信公众号(小黑的安全笔记):upload-labs靶场6-10关
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
点赞
http://cn-sec.com/archives/951153.html
复制链接
复制链接
-
左青龙
- 微信扫一扫
-
-
右白虎
- 微信扫一扫
-
评论