Upload-Labs通关笔记
本文最后更新于:29 分钟前
配置环境
这里我直接装在以前绕waf的Windows服务器中,直接下载github中的Windows集成环境即可。解压后自带PHPstudy,一键启动即可。
Pass-01
第一关很简单,前端绕过。这里我为了方便,直接禁用了浏览器的js,这样就可以任意上传了(doge)。但是实战中不建议这样做,因为可能会影响网站正常功能。上传一个jpg或者png后缀的马子,再burpsuite抓包,把后缀改成php就行了。
Pass-02
查看提示,是mime类型检测,只需修改Content-Type处的值为image/png,并在文件内容开头加上GIF89a即可。
如下图,成功上传:

Pass-03
这里只ban了几个常见后缀,直接改成PhP3即可。上传成功:

Pass-04
查看提示中的黑名单,ban了不少后缀,但是漏掉了PhP这个后缀。抓包改后缀为PhP,没有绕过。这时想到先上传.htaccess配置文件,把jpg后缀的文件当作PHP文件解析:
1 | |
可以看到,上传成功:

再传一个图片马,也成功了:

访问一下对应URL,证明PHP解析成功了:

Pass-05
黑名单里ban的更多了,连.htaccess都ban了,但是漏掉了PhP后缀,上传成功后发现文件名也变了:

Pass-06
这一关不仅和上一关一样ban了不少后缀,而且看代码后发现还加了强制大小写转换。正好最近刷CTF题遇到一道上传.user.ini的题,于是在这里试试,上传成功了:

再一看黑名单,漏掉了txt后缀,再把写有PHP代码的txt文档传上去:

虽然上传成功了,但是没有解析为PHP文件,不知道为什么。看了其他师傅的wp,发现phP后缀也能绕,但是我的不行(可能关卡顺序不一样吧):

Pass-07
好家伙,所有后缀都ban了,不过可以试试双写绕过:

不过没有解析为PHP文件,不知道为什么。后来发现可以试试在文件末尾加上点,也可以绕过。
Pass-08
这一关有了去除末尾点的代码,但是没有过滤后缀名::$DATA的代码,因此可以考虑在末尾加上这个:

删掉::$DATA即可正常访问到上传的文件。
Pass-09
它来了它来了,白名单上传最终还是来了!哈哈,开个玩笑。看了代码以后才发现,依然是个黑名单上传,只不过拦截的规则是前面关卡的总和!
分析代码,先是去除文件名前后的空格,再去除文件名最后所有的.,再通过strrchar函数来寻找.来确认文件名的后缀,但是最后保存文件的时候没有重命名而使用的原始的文件名,导致可以利用1.php. .(点+空格+点)来绕过。因此使用burp抓包来修改文件后缀上传文件。
上传成功了,连文件名都没有改:

Pass-10
又是一个后缀名双写绕过,这里不重复了。
Pass-11
完了,这次是真的白名单了!查看代码以后,发现有路径拼接,可以尝试00截断:

上传成功。
Pass-12
同样是00截断,但不同的是这次的save_path是通过post传进来的,需要在二进制中进行修改,因为post不会像get对%00进行自动解码。
Pass-13
这一关要上传图片马,绕过检测只需要在文件头加入GIF89a。为了方便,我这里只上传jpg图片马,其它后缀还没有测试。
制作图片马:
1 | |

上传成功了,实战中需要结合文件包含漏洞来利用。
Pass-14、Pass-15
绕过方法同Pass-13。
Pass-16
这里存在一个二次渲染,还是传入之前的图片马。一直无法绕过,看了其它师傅的wp,换了几种后缀都不行,先存疑吧。