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

国外素材网站推荐百度云搜索引擎入口官网

国外素材网站推荐,百度云搜索引擎入口官网,我国疫情的最新消息,网站彩票网站开发当时误打误撞发现的,觉得挺奇葩的,记录下 一个正常的图片上传的点,文件类型白名单 但是比较巧的是当时刚对上面的id进行过注入测试,有一些遗留的测试 payload 没删,然后在测试上传的时候就发现.php的后缀可以上传了&a…

当时误打误撞发现的,觉得挺奇葩的,记录下

一个正常的图片上传的点,文件类型白名单

在这里插入图片描述

但是比较巧的是当时刚对上面的id进行过注入测试,有一些遗留的测试 payload 没删,然后在测试上传的时候就发现.php的后缀可以上传了,直接从白名单变成任意文件上传了。

id的正常格式是一串数字,但是如果将id出改成字符串,然后再修改上传的文件名为.php,就可以成功上传了,很奇怪的逻辑处理。当时的猜测是id处判断字符串错误进入了一个没有验证上传文件类型的代码段,导致直接任意文件上传了。

在这里插入图片描述

后面出于好奇,想验证下和我的猜测是否一致,去源码里面看了一眼,果然跟我的猜测一致,关键代码如下:

<?php public function upload(){.......$id = intval($this->post('id'));.......$real_file_type = [];       // 限制文件类型$real_file_size = 0;        // 限制文件大小if ($id) {$where = "id = {$id}";if ($menu_id) {$where .= " and menu_id = '{$menu_id}'";}$config = publics::getOne(ApplyExtraField::TABLE, 'type, options', $where);if (empty($config)) {return $this->returnJson(400, $this->language['parameter_error']);}if (!in_array($config['type'], [8, 11, 12])) {return $this->returnJson(400, $this->language['error_field']);}$options = json_decode($config['options'], true);$condition = $options['condition'] ?? [];$real_file_type = $condition['file_type'] ?? [];$real_file_size = isset($condition['file_size']) && $condition['file_size'] ? $condition['file_size'] * 1024 : 0;}.......// 上传文件只会上传一个foreach ($this->request->getUploadedFiles() as $file) {$file_size = $file->getSize();$file_name = $file->getName();$file_type = strtolower($file->getExtension());// 判断文件类型if ($real_file_type && !in_array($file_type, $real_file_type)) {// 删除 Redis 列表中值$this->redis->lRem($uploadFileKey, $uploadFileVal, 0);$this->redis->sRem($executionListKey, $fileJsonStr);return $this->returnJson(400, $this->language['file_format_error']);}$fileExt = $fileExt ?: $file_type;.......}.......return $this->returnJson(200, $this->language['upload_success'], ['name' => $file_name,'url' => $file['url'],'file' => $file]);}?>

首先这里的正常功能是接收到的id是一串数字,只要不是数字0if ($id)就是True的,然后会根据menu_id去数据库中查询相关信息返回给,经过几层处理$real_file_type = $condition['file_type'],会得到数据库中查询出的文件白名单类型。

然后if ($real_file_type && !in_array($file_type, $real_file_type))会判断$file_type是否在白名单$real_file_type中,不在的话,就从Redis列表和集合中删除相应的值,并返回一个JSON格式的错误响应。

而当$id是字符串时,if ($id) 就是False

在这里插入图片描述

这样的话$real_file_type数组就没有接收到数据库查询出来的白名单,还是为空。而$real_file_type = []的话,if ($real_file_type && !in_array($file_type, $real_file_type)) == False,直接直接跳过判断文件类型,数组为空也没法做白名单校验。直接导致了任意文件上传。

http://www.ds6.com.cn/news/39849.html

相关文章:

  • 网站设计的逻辑营销公司取名字大全
  • 金华网站建设开发5118站长网站
  • 哪家做企业网站百度天眼查公司
  • 网页制作与网站建设实战大全上海网站建设哪家好
  • 网站建设项目资金申请友情链接站长平台
  • 义乌网站建设公司哪家好成品网站货源1
  • 广州建设网站是什么样的做电商需要学哪些基础
  • 上海网站建设 永灿站长工具seo综合查询可以访问
  • 行业类门户网站建设方案手机百度网页版
  • 有没有专做自驾游的网站网络营销推广论文
  • 王也语录seo高级优化方法
  • 大连门户网站建设网址
  • 招聘网站开发人员阳江seo
  • 常州做的网站的公司网站产品推广计划方案模板
  • 美国做3d+h动画的网站怎么制作一个简单的网页
  • 往公众号里放网站怎么做深圳优化公司哪家好
  • 河南网站建设怎么收费百度seo快速见效方法
  • 广告文案生成器运营推广seo招聘
  • 郑州做网站建设公司哪家好百度关键词推广2元一天
  • 哪个建站系统适合外贸商城网站建设友情链接检测
  • android下载安装官方免费下载关键词seo是什么意思
  • 哈尔滨做网站哈尔滨学院怎么做推广和宣传平台
  • 网站怎么做认证吗整合营销传播工具有哪些
  • 合肥 网站建设seo名词解释
  • 计量检测网站平台建设方案今日重大新闻头条
  • 萧山住房和城乡建设委员会网站百度明星人气榜入口
  • 浙江建设厅网站官网吸引人的推广标题
  • 淘宝做网站的公司北京seo服务行者
  • 宜宾建设教育培训中心网站搜索引擎优化营销
  • 网站规划与设计教案seo引擎优化平台培训