upload-labs游戏
upload-labs游戏
黑名单绕过方式
第1关:JavaScript前端验证
绕过方式:
1、BurpSuit抓包修改文件名后缀
2、在浏览器禁用JavaScript
第2关:MIME类型的验证
绕过方式:
BurpSuit抓包修改文件类型(Content-Type字段)
第3关:特殊后缀的黑名单验证
绕过方式:
1、等价扩展名绕过
这个等价扩展名绕过试了很多次一直没有成功,通过查资料知道了php版本有nts型和ts型,而nts型不能解析等价扩展名。我一直是用的phpstudy,里面php版本只有nts型。
这里是大佬的参考资料
https://www.cnblogs.com/Article-kelp/p/14927087.html
一开始我下载的PHP版本是php-8.2.4-ts,尝试了一下,apache运行报错,又折回下载了php-7.4.33-ts版本,成功。
2、看到网上有人说这里可以用.htaccess文件绕过+jpg文件绕过,但是我试了很久,一直不能绕过,原因是因为这里上传.htaccess文件时,文件前面会有一段时间戳,把.htaccess文件变成了202303212110057239.htaccess,导致无法正常解析。
第4关:.htaccess绕过
绕过方式:
php文件改成.jpg文件+.htaccess文件绕过
第5关:空格+点绕过
绕过方式:
利用BurpSuit抓包修改文件后缀名为“.php. .”,因为这里先过滤最后的点,然后过滤了空格,最后拿.php.与黑名单配对,.php.不在黑名单中。成功绕过。
第6关:大小写绕过(复现失败)
绕过方式:
没有全部转化成小写,这里可以用.PhP、.PHP、.Php等后缀绕过。(这里不知道什么原因,把.PHP文件上传以后一直访问不到,用浏览器访问报出500的错误,这里路径,文件名都是对的。然后我做了个小测试,把.PHP文件改成.php文件后就可以访问到了。目前还不知道啥原因。)
第7关:末尾加空格绕过
绕过方式:
末尾加空格
第8关:末尾加点绕过
绕过方式:
末尾加点
第9关:::$DATA绕过
绕过方式:
利用Windows特性::$DATA绕过
第10关:空格+点绕过
绕过方式:
利用BurpSuit抓包修改文件后缀名为“.php. .”,因为这里先过滤最后的点,然后过滤了空格,最后拿.php.与黑名单配对,.php.不在黑名单中。成功绕过。
第11关:双写绕过
绕过方式:
源码显示把php等后缀名都变为空了,所以这里双写以.pphphp后缀名上传。
白名单绕过方式
第12关:GET型%00截断绕过
绕过方式:
%00只能用于php版本低于5.3的。刚开始一直用的php5.3.29,一直不能绕过,查了后才知道php版本要低于5.3。
php各个版本网址:
https://windows.php.net/downloads/releases/archives/
下载后需要没有php.ini文件,把php.ini-dist文件改成php.ini文件就好了,然后修改一下magic_quotes_gpc为OFF就行了。
第13关:POST型%00截断绕过
绕过方式:
和GET型类似,就是%00需要用url解码
上传图片马+文件包含漏洞
第14关:图片+文件包含漏洞
制作图片马:
copy 1.jpg /b + 2.php /a 3.jpg
这里需要注意的就是1.jpg/b需要放前面,这样可以把2.php中的内容放在最后。这里对图片可能也有点要求,我第一次使用的图片有点大,不知道怎么回事报错了,后来用了一张小一点的图片,成功解析。
上传成功后用文件包含漏洞以php语言解析出来
大概格式:upload-labs/include.php?file=upload/1120230322182510.jpg
第15关:getimagesize()
getimagesize — 取得图像大小
可以用图片马+文件包含漏洞。
第16关:exif_imagetype()
exif_imagetype — 判断一个图像的类型
可以用图片马+文件包含漏洞。
第17关:二次渲染(复现失败)
imagecreatefromjpeg — 由文件或 URL 创建一个新图象。
逻辑漏洞
第18关:条件竞争
只要访问到php_playload.php,就会生成一个一句话木马。
<?php
fputs(fopen('yyy.php','w'),
'<?php @eval($_POST[yyy])?>')
?>
python脚本去访问,也可以自己去访问
import requests
url = "xxx.xxx"
while True:
html = requests.get(url)
if html.status_code == 200:
print("OK")
break
第19关:条件竞争+Apache的解析漏洞(复现失败)
Apache解析漏洞:当文件名为1.php.xxx时,会把文件当做1.php执行
第20关:move_uploaded_file()
move_uploaded_file() 函数将上传的文件移动到新位置。
绕过方式:
1、可以用%00截断,但是php版本需要低于5.3,而且需要magic_quotes_gpc=OFF
2、move_uploaded_file()有这么一个特性,会忽略掉文件末尾的 /.
第21关:利用数组绕过验证
热门相关:无量真仙 第一神算:纨绔大小姐 薄先生,情不由己 霸皇纪 网游之逆天飞扬