【漏洞靶场】文件上传后端检测双写绕过--upload-labs

一、漏洞描述

在upload-labs第十一关中,服务器脚本才用了黑名单的形式检测非法文件后缀,用了一系列函数来取得文件后缀名。使用str_ireplace()函数将非法后缀替换为空函数意思是使用一个字符串替换另一个字符串中的一些字符,对大小写不铭感。因为只替换一次,可以采用双写文件后缀的方法绕过检测。

二、漏洞发现

先在本地写php脚本若上传成功,且知道上传后文件在网站保存的路径,可通过网页访问获得服务器配置信息,命名为z.php

直接看第十一关的代码,先用file_exists函数判断文件是否存在,array数组函数中就是服务器的黑名单,几乎包含过滤了所有非法后缀。

trim() 函数:移除字符串两侧的空白字符或其他预定义字符。这里将上传的文件名去掉两边的字符串

str_ireplace()函数:使用一个字符串替换字符串中另一些字符串,对大小写不敏感,所以不能用windows的大小写不敏感的默认属性绕过。将只要是黑名单中包含的后缀替换为空。

str_replace()函数:和str_ireplace只有一个区别,就是这个对大小写敏感

若我将z.php上传后,通过这个函数,我的脚本文件会变得没有后缀。所以就算上传上去也没用,不可执行。

经过上面的处理,img_path定义了上传到的路径,看后面它直接将我原文件的名字做上传完成的文件名字,没有加一些什么随机数的改变。

$_FILES['myFile']['name']文件上传时候本身的名字,用户定义的名字

$_FILES['myFile']['tmp_name'] 文件被上传后在服务端储存的临时文件名,一般是系统默认

但是还是有办法绕过的,我可以将文件后缀改为z.pphphp,当通过str_ireplace函数的时候,因为从前向后遍历过滤。我的文件名字就会变为z.php。过滤的是中间的php。

三、漏洞利用

用burp抓包,将z.php改包为,z.pphphp成功绕过并且上传,因为靶场会将上传的图片文件返回展示给用户。通过响应包可得上传后的文件路径。

成功利用脚本,获取服务器配置信息。也可上传一句话木马,通过蚁剑,菜刀等后门工具链接获取webshell。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Edward Hopper

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值