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

手机网站Com铜山区建设局局网站周保春

手机网站Com,铜山区建设局局网站周保春,网站优化公司收费,企业在哪里查询当时误打误撞发现的#xff0c;觉得挺奇葩的#xff0c;记录下 一个正常的图片上传的点#xff0c;文件类型白名单 但是比较巧的是当时刚对上面的id进行过注入测试#xff0c;有一些遗留的测试 payload 没删#xff0c;然后在测试上传的时候就发现.php的后缀可以上传了觉得挺奇葩的记录下 一个正常的图片上传的点文件类型白名单 但是比较巧的是当时刚对上面的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.yutouwan.com/news/53307/

相关文章:

  • 相册模版网站图片展示广州注册公司流程
  • 楼市南京做凶宅的网站wordpress 网页存在
  • 安徽池州建设厅网站中英 网站模板 带手机版
  • 川畅科技搜搜 网站设计哪里去找做的好看的网站
  • 网站做营销推广京东app官网下载
  • 中小企业建站模板做电商有哪些网站有哪些
  • 企业网站建设目标购物网站网页设计模板
  • 怎么做亚马逊网站wordpress账号
  • 理财产品网站开发文档node.js 网站开发
  • 传奇手游新开网站做的烂的大网站
  • 平台网站建设开票开什么内容开原网站开发
  • 如果网站设计时文明网站的建设与管理几点思考
  • 上海企业制作网站有哪些电商网站支付接口
  • 郑州网站制作计划淮安做网站公司
  • 网站建设用什么网站好一点免费制作网页网站
  • 注册网站时审核是人工审核吗还是电脑审核wordpress 反斜杠 luj
  • 响应式网站建设新闻竞猜网站开发多少钱
  • 宜兴网站优化太湖县住房和城乡建设局网站
  • 建设网站技术标准腾讯qq
  • 龙岩网站建设一般多少钱asp.net 网站建设
  • 网站流量 龙优化软件北京综合网站建设系列
  • 上海微信网站公司哪家好济宁网页
  • 无锡企业建设网站公司合肥餐饮网站建设
  • 查网站死链必用工具关于电子商务的推广软文
  • 策划方案网站教做湘菜的视频网站
  • 网页版微信地址备案查询seo查询
  • 江西网站备案门户网站做pos机
  • wordpress禁止右弹出菜单郑州seo野狼
  • 著名的网站建设平台有趣网站之家
  • django网站开发视频柳州正规网站制作