当前位置: 首页 > article >正文

文件上传绕过的小点总结(10)

18.数组漏洞绕过

给出源码:

$file_name = reset($file) . '.' . $file[count($file) - 1];
//这个是对文件名的重命名处理,里面的reset函数是读取数组的第一个元素,count函数是读取数组元素的个数
$ext = end($file);
$allow_suffix = array('jpg','png','gif');
//这个是对后缀的限制,其中end函数是读取数组的最后一个元素

这里是存在漏洞的,正常情况下,服务器对上传文件名进行重命名处理,

save_name[0]=upload save_name[1]=jpg 该数组经过上述文件函数处理会变成upload.jpg

但如果是:

save_name[0]=upload.php save_name[2]=jpg 该数组绕过后缀名函数检测,经过上述文件函数处理会变成upload.php

两者的差异来源就是count($file)-1,两种情况的值都为1,但第二种情况,save_name[1]为空,save_name[2]设为jpg,但形同虚设。

于是我们利用这种数组上的漏洞,修改save_name数组值,就可以绕过限制。

简单思路:开启BP拦截,上传loudong.jpg文件,BP拦截数据,将save_name改为save_name[0],并将upload-20.jpg改为upload-20.php,再增加一个元素save_name[2],设值为jpg,关闭拦截。

复制图像链接,直接访问。

 


http://www.kler.cn/a/613658.html

相关文章:

  • AI 代理框架:组件及前五开源解决方案
  • Flask项目部署:Flask + uWSGI + Nginx
  • [异步监听事件、异步绑定属性]通过vue的this.$refs.组件.$props和.$on实现异步绑定组件属性和事件监听
  • Kubernetes 中导致 pod 重启的原因
  • PrimeTime生成.lib竟暗藏PG添加Bug
  • Skynet 中 snlua 服务启动整体流程分析
  • 工作后考研
  • 【STM32】GPIO输入(按键)
  • 交换机与路由器的区别:深入解析
  • 新手村:逻辑回归-理解04:熵是什么?
  • # 线性代数:660习题总结660# 宋浩讲解视频
  • 安装docker版jira8.0.2
  • Go 语言标准库中reflect模块详细功能介绍与示例
  • 如何使用 GPT-4o API 实现视觉、文本、图像等功能 附赠gpt升级和4o额度购买
  • OPPO Pad 4 Pro图赏,轻薄大屏,多面出色
  • QT四 资源文件;绘图;绘图设备;qpixmap 和 qimage 转换;QPixmap、QBitmap、QImage和 QPicture的区别
  • Golang中间件的原理与实现
  • 使用 Selenium 构建简单高效的网页爬虫
  • Docker Compose 基础知识
  • rnn的ho的维度 (num_layers * num_directions, batchsize, hidden_size)