upload-labs靶场训练篇(windows版21题)1-13题
upload-labs为文件上传的训练靶场,目前一共有21关,基本涵盖了目前全部的文件上传漏洞。此篇为上篇。
level-1(前端JS验证)
源码:
1 | function checkFile() { |
解答:
在浏览器中直接执行:
1 | checkfile=[] |
使得前端返回array为空,即可上传一句话木马,拿到shell。
level-2(后端PHP验证)
源码:
1 | $is_upload = false; |
解答:
BP抓包,修改为:image/png
即可绕过
level-3(解析漏洞)
源码:
1 | $is_upload = false; |
解答:
本题环境出了一些问题,Apache无法正常解析phps/phtml这样的后缀,因此只贴出做法。
使用前提:Apache的httpd.conf中有以下代码:
1 | AddType application/x-httpd-php .php .phtml .phps .php5 .pht |
ban了几个关键字,绕就完事了。后缀改为上述内容。如果不开解析,将会变成注释或者直接输出在屏幕上。
level-4(.htaccess)
源码:
1 | $is_upload = false; |
解答:
全过滤了还怎么打
唯独放了一个.htaccess
,只能构筑相应文件:
前提条件:(1.mod_rewrite模块开启。2.AllowOverride All
)
此时,传上去的图片都会被解析成PHP文件。直接传马连a.png即可。
level-5和10(.空格.空格)
源码5:
1 | $is_upload = false; |
源码10:
1 | $is_upload = false; |
解答:
全ban完了,用.{空格}.绕过
1 | filename = "phpinfo.php. . " |
访问 phpinfo.php 即可
level-6(大小写绕过)
源码:
1 | $is_upload = false; |
解答:
没有防大小写,直接后缀名改成PHP一把梭了。、
level-7(空格绕过)
源码:
1 | $is_upload = false; |
解答:
空格绕过,上传 phpinfo.php
,访问phpinfo.php.
00截断的php版本要求是小于5.3.29
level-8(点绕过)
源码:
1 | $is_upload = false; |
解答:
.绕过,穿上phpinfo.php.
,访问php.
即可。
level-9(::$DATA绕过)
源码:
1 | $is_upload = false; |
解答:
可以发现没有去除字符串::$DATA
思路:同第六题一样,利用windows的特性,这里黑名单没有过滤::$DATA
,因此上传xx.php::$DATA
,上传成功后windows会自动去除::$DATA
上传文件.php::$DATA
level-11(双写绕过)
源码:
1 | $is_upload = false; |
解答:
双写绕过
上传:.pphphp
,进过黑名单过滤,会变成.php
level-12(白名单绕过之get型:%00)
源码:
1 | $is_upload = false; |
解答:
此题对环境有特殊要求,目前无法复现,直接使用大佬的笔记内容
4月24日更新:复现完成。修改php.ini相应参数,已经PHP5.2.17
前提:该题需要magic_quotes_gpc=off、php版本要小于5.3.4,5.3.4及以上已经修复该问题
思路:因为$img_path是拼接而成,所以直接使用%00截断后面的内容,因此,先上传xx.jpg,再使用bp截断
level-13(白名单绕过之post型:0x00)
源码:
1 | $is_upload = false; |
解答:
依旧是白名单绕过。post型,hex中0x00绕过。
在hex中,找到1.php
对应的十六进制数值,70、68、70,在70后插入一个字节 00
直接访问阶段前的php文件即可。