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关:利用数组绕过验证
内容来源于网络如有侵权请私信删除

文章来源: 博客园

原文链接: https://www.cnblogs.com/candada/p/17252769.html

你还没有登录,请先登录注册
  • 还没有人评论,欢迎说说您的想法!