upload靶场第二十一关 数组后缀绕过

源码分析及思路

我们首先还是先来看一下源码

第一行先对content-type进行了检查,可通过抓包绕过

第二行 如果save name(保存名称)为空,就使用原本的文件名称,如果不为空就使用保存名称

第三行if判断语句,判断文件名是不是数组 如果不是数组,就用点给分开分成数组。就阻止了后缀加点或加空格的绕过方式

第四行是获取数组最后一位的值

第五行是白名单限制,if判断是否符合白名单

第六行拼接 是数组第一个元素+‘.‘+数组元素个数减一位的元素(例如数组有三个元素,那么就选择第二位元素进行拼接)

漏洞就存在于第六行代码之中,例如下图所示,在数组下标为0,1,8的位置存入数据,其他位置都为空,那么数组元素就为三。按照第六行代码的拼接原理,应该是数组下标为2的进行拼接,但又因为是空(null)就会合成php类型的文件,从而产生了绕过方式

(该图转载自B站up主天欣skyx)

实验过程

上传一句话木马文件,并用burp进行抓包,保存名称可不做修改

先修改content-type为 image/jpeg

对这些部分进行修改,黄色标出的部分由复制得到。forward进行文件上传

可成功上传

获得url后使用蚁剑连接

  • 15
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值