Upload-labs文件上传漏洞(大小写绕过)——Pass05

2023-11-10

0×00 题目描述

真好把上一题的.htaccess文件也给黑名单限制了

与Pass04做个比较

 

0×01 源码分析

$is_upload = false;
$msg = null;
if (isset($_POST['submit'])) {
    if (file_exists(UPLOAD_PATH)) {
        $deny_ext = array(".php",".php5",".php4",".php3",".php2",".html",".htm",".phtml",".pht",".pHp",".pHp5",".pHp4",".pHp3",".pHp2",".Html",".Htm",".pHtml",".jsp",".jspa",".jspx",".jsw",".jsv",".jspf",".jtml",".jSp",".jSpx",".jSpa",".jSw",".jSv",".jSpf",".jHtml",".asp",".aspx",".asa",".asax",".ascx",".ashx",".asmx",".cer",".aSp",".aSpx",".aSa",".aSax",".aScx",".aShx",".aSmx",".cEr",".sWf",".swf",".htaccess");
        $file_name = trim($_FILES['upload_file']['name']);
        $file_name = deldot($file_name);//删除文件名末尾的点
        $file_ext = strrchr($file_name, '.');
        $file_ext = str_ireplace('::$DATA', '', $file_ext);//去除字符串::$DATA
        $file_ext = trim($file_ext); //首尾去空

        if (!in_array($file_ext, $deny_ext)) {
            $temp_file = $_FILES['upload_file']['tmp_name'];
            $img_path = UPLOAD_PATH.'/'.date("YmdHis").rand(1000,9999).$file_ext;
            if (move_uploaded_file($temp_file, $img_path)) {
                $is_upload = true;
            } else {
                $msg = '上传出错!';
            }
        } else {
            $msg = '此文件类型不允许上传!';
        }
    } else {
        $msg = UPLOAD_PATH . '文件夹不存在,请手工创建!';
    }
}

再与Pass04作比较

$is_upload = false;
$msg = null;
if (isset($_POST['submit'])) {
    if (file_exists(UPLOAD_PATH)) {
        $deny_ext = array(".php",".php5",".php4",".php3",".php2","php1",".html",".htm",".phtml",".pht",".pHp",".pHp5",".pHp4",".pHp3",".pHp2","pHp1",".Html",".Htm",".pHtml",".jsp",".jspa",".jspx",".jsw",".jsv",".jspf",".jtml",".jSp",".jSpx",".jSpa",".jSw",".jSv",".jSpf",".jHtml",".asp",".aspx",".asa",".asax",".ascx",".ashx",".asmx",".cer",".aSp",".aSpx",".aSa",".aSax",".aScx",".aShx",".aSmx",".cEr",".sWf",".swf");
        $file_name = trim($_FILES['upload_file']['name']);
        $file_name = deldot($file_name);//删除文件名末尾的点
        $file_ext = strrchr($file_name, '.');
        $file_ext = strtolower($file_ext); //转换为小写
        $file_ext = str_ireplace('::$DATA', '', $file_ext);//去除字符串::$DATA
        $file_ext = trim($file_ext); //收尾去空

        if (!in_array($file_ext, $deny_ext)) {
            $temp_file = $_FILES['upload_file']['tmp_name'];
            $img_path = UPLOAD_PATH.'/'.date("YmdHis").rand(1000,9999).$file_ext;
            if (move_uploaded_file($temp_file, $img_path)) {
                $is_upload = true;
            } else {
                $msg = '上传出错!';
            }
        } else {
            $msg = '此文件不允许上传!';
        }
    } else {
        $msg = UPLOAD_PATH . '文件夹不存在,请手工创建!';
    }
}

发现不同点在第九行

Pass04中存在将文件后缀全部转化为小写这一步,而Pass05没有,因此这一题可以使用大小写绕过

上传成功

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Upload-labs文件上传漏洞(大小写绕过)——Pass05 的相关文章

  • GIT简单介绍及常用命令

    git是什么 git是目前企业使用最多最流行的 分布式版本 控制系统 分布式版本控制系统 没有中央服务器 每个人的电脑就是一个完整的版本库 工作时候不需要联网 因为版本就在自己的电脑上面 如果多人同时编写修改一个文件的时候 只需要将两者之间
  • BurpSuite的Cluster Bomb模式下使用Runtime File爆破不成功解决办法——路径全英文

    在做Pikachu超级简单的第一题的时候我就跪了 抓到包发现传输的就是没有加密的用户名和密码 就想着直接对两个参数进行爆破 采用笛卡尔积的方法于是就使用Cluster Bomb模式 Positions模块介绍图 我实际抓包设置 随后对两个参
  • 封神台——BurpSuite入门(改包、爆破)

    点击传送门进来看到的就是一个很简陋的网站 我们来到一个网站就先注册一下 感受一下全面的服务 一个假网做的还挺完备 点击一个产品 看到他的设计如此之烂 什么也没有居然要价5400 很多购物网站都存在着支付漏洞 于是我们抓个包试试看 首先打开B
  • 【CTF】CTFshow-SQL注入(持续更新)

    CTF CTFshow SQL注入 持续更新 就剩一年的大学时光了 最近也很迷茫 想找实习 又得考托福 又想提前开始毕设 假期前又要上学校安排的实训 马上还又有一门考试 事情一堆 但又感觉整天不知道自己应该做什么 在过完了我给自己安排的两个
  • web基础学习笔记(九)之节点常用属性和方法

    节点常用属性和方法 getElementsByTagName 获取当前节点的指定标签名孩子节点 gappendChild oChildNode 添加一个子节点 oChildNode是要添加的孩子节点 属性 childNodes 获取当前节点
  • Upload-labs文件上传漏洞(MIME限制)——Pass02(详解)

    0 00 题目描述 本题要求对数据包中的MIME进行检查 0 01 MIME介绍 所以首先要搞清楚MIME在数据包的哪里 MIME是个什么 关于MIME 由百度百科可知 MIME Multipurpose Internet Mail Ext
  • Bean拷贝组件(注解驱动)方案设计与落地

    一 背景 数据流转在各层之间的过程 应当是改头换面的 字段属性数量 属性名称 一般不变 但也有重构时出现变化的情况 类型名称 普遍变化例如BO VO DTO 对于转换的业务对象 原始的做法时直接实例采用Getter与Setter方法进行逐一
  • Drools规则引擎入门学习记录

    业务开发过程中 对于某些判断性的通用规则是基于if else封装 还是基于策略模式封装 无论以上那种封装出来的方法 只能在单体软件包中共用 且不能无感部署 然而对于业务而言 可能规则改变的比较频繁 例如与营销有关的活动 会频繁的修改商品价格
  • springboot 框架学习 thymeleaf静态模板引擎实现页面跳转

    最近在深啃jvm虚拟机 主要方法是阅读 深入java虚拟机 这本书 写的很形象深入 简单易懂 今天上web课程老师讲到servlet时突然想到boot的页面跳转与数据响应 之前的springmvc在boot中也有集成 但是boot的常用页面
  • SQL注入之报错注入的一些随笔

    0x00 序言 关于报错注入的话虽然我在我之前的文章里面写了一些 但是sql注入的姿势实在是太多了 之前写过的payload不全也不系统 今天抽出时间来总结一下 ps 关于报错注入的原理和使用的基本函数我在我之前的文章 SQLI LABS修
  • 封神台——Cookie伪造目标权限(存储型XSS)

    点击传送门看到的是一个留言板 我们首先要判断是否存在XSS 于是输入一串JS代码 看是否会弹出一个内容为 zkaq 的弹窗 出现了 说明存在XSS漏洞 关于XSS漏洞的科普如下 跨站脚本攻击是指恶意攻击者往Web页面里插入恶意Script代
  • 【upload-labs】————8、Pass-07

    闯关界面 前后端检测判断 查看源代码 文件后缀大小写 去除 DATA 关键词过滤 在这里可以发现所有的都考虑到了 但是却没有考虑后缀为 的情况 在windows中PHP会自动去除后缀名中最后的 我们可以通过这种方式来绕过 加 来绕过
  • 浏览器及手机版本型号判断

    Navigator 对象 包含有关浏览器的信息 所有浏览器都支持该对象 对象属性参考 https www w3school com cn jsref dom obj navigator asp 属性 描述 appCodeName 返回浏览器
  • eclipse修改文字显示大小及html乱码修改编码格式

    1 修改字体大小 2 修改编码格式 html文件出现乱码时需要修改编码格式 备注 有时候修改后还会是乱码 重启eclipse即可
  • Upload-labs文件上传漏洞(大小写绕过)——Pass05

    0 00 题目描述 真好把上一题的 htaccess文件也给黑名单限制了 与Pass04做个比较 0 01 源码分析 is upload false msg null if isset POST submit if file exists
  • 【upload-labs】————12、Pass-11

    闯关界面 前后端检测判断 查看源代码 这里采用了白名单判断 但是 img path直接拼接 所以可以先上传一个符合白名单检测的jpg文件 之后再burpsuite中使用 00截断保存路径即可 截断保存路径 浏览器中访问
  • 前端学习--多益

    什么是跨域 它主要解决什么问题 如果你有8个不同的css样式 整合进网站的最好方式是 如果仅需要引入一个CSS文件 则使用连接方式 如果需要引入多个CSS文件 则首先用连接方式引入一个 目录 CSS文件 这个 目录 CSS文件中再使用导入式
  • 苹果IOS手机设置BurpSuite抓包(详细步骤)

    0 01 添加BP的Proxy Listeners 点击Add添加 端口填写8080 然后选择Specific address 选手机和电脑同时在的那个IP区段 IP具体查询方式使用Win R 输入ipconfig 然后看这个 在Speci
  • Upload-labs文件上传漏洞(空格绕过)——Pass06

    0 00 题目描述 似乎可以使用Pass04文件改写 但是感觉应该不会那么简单 0 01 源码分析 is upload false msg null if isset POST submit if file exists UPLOAD PA
  • png文件格式详解【转】

    5 2 2 PNG图像文件存储结构 1 PNG文件存储结构的格式可以在http www w3 org TR REC png htm上找到定义 BMP文件总体上由两部分组成 分别是PNG文件标志和数据块 chunks 如表5 8所示 其中数据

随机推荐

  • MYSQL——模糊查询:like

    模糊查询指的是在数据中按照一定模糊的条件进行搜索 模糊查询的核心在于通配符的使用 通过使用通配符可以匹配不同的字符或字符串 一般模糊查询语句如下 SELECT 字段 FROM 表 WHERE 某个字段 LIKE 条件 表示任意0个或多个字符
  • css 背景效果_软件技术:我写CSS的常用套路(附demo的效果实现与源码)

    前言 本文是笔者写CSS时常用的套路 不论效果再怎么华丽 万变不离其宗 1 交错动画 有时候 我们需要给多个元素添加同一个动画 播放后 不难发现它们会一起运动 一起结束 这样就会显得很平淡无奇 那么如何将动画变得稍微有趣一点呢 很简单 既然
  • Harbor仓库介绍与搭建过程

    一 介绍 Harbor 是一个英文单词 意思是港湾 港湾是干什么的呢 就是停放货物的 而货物呢 是装在集装箱中的 说到集装箱 就不得不提到Docker容器 因为docker容器的技术正是借鉴了集装箱的原理 所以 Harbor正是一个用于存储
  • mysql数据库知识整理

    目录 InnoDB和MyISAM引擎常见区别 索引的基本原理 聚簇索引和非聚簇索引的区别 索引的数据结构及优势 索引的设计原则 innerdb主键索引自增的原因以及联合索引最左原则 锁的类型有哪些 MySQL执行计划 InnoDb引擎的执行
  • 关于网络编程里自定义序列化(字节化)遇到的坑

    1 结构体字节流化可能会出现的问题 网络编程里很多时候需要发送结构体 比如下面定义一个最简单的拥有多个元素的结构体 typedef struct msg int len char name 24 msg t 在保持客户端和服务端程序的结构体
  • Servlet实现文件上传

    定义 在Servlet3 0之前实现文件上传需要借助Apache的上传组件 在3 0中 提供了一个Servlet API标准去支持文件上传 上传前置 表单页面设置 设置enctype属性格式为multipart form data meth
  • flutter多种底部导航栏样式

    1 底部导航栏 外弧样式 实现代码 引入flutter的dart库 import package flutter material dart 启动函数 void main gt runApp MyApp 自定义组件 class MyApp
  • springboot中使用注解获取前台header信息

    今天在写vue时 需要实现一个功能 就是前台通过header 请求头 将token发送到服务端 后台使用的是springboot 第一下想到是springboot注解 但是百度了挺久发现很多人都是使用的原生servlet对象来获取头信息 其
  • 【Educoder python 作业答案】国防科技大学《大学计算机基础》※ 冯·诺依曼体系结构——模拟 TOY 计算机(MOOC版)

    Educoder python 作业答案 国防科技大学 大学计算机基础 冯 诺依曼体系结构 模拟 TOY 计算机 MOOC版 第1关 程序加载 第2关 执行一条指令 第3关 自动执行 TOY 程序 第1关 程序加载 mem 1000 初始化
  • Effective C++ 条款十二:复制对象时勿忘其每一个成分

    这句话包含两部分的意思 第一部分是要考虑到所有成员变量 特别是后加入的 相应的拷贝构造函数和赋值运算符要及时更新 第二部分是在存在继承时 不要遗忘基类部分的复制 先看第一部分的意思 举个例子 class SampleClass privat
  • [Python人工智能] 二.TensorFlow基础及一元直线预测案例

    从本篇文章开始 作者正式开始研究Python深度学习 神经网络及人工智能相关知识 前一篇文章讲解了TensorFlow的安装过程和神经网络基础概念 这篇文章将分享TensorFlow基础并介绍一元直线预测的案例 主要结合作者之前的博客和 莫
  • ubuntu升级python版本(3.5->3.6)

    安装aioredis时提示Python版本需 gt 3 5 3 所以进行升级 命令如下 获取最新的python3 6 将其添加至当前apt库中 并自动导入公钥 sudo add apt repository ppa jonathonf py
  • Tomcat日志文件过大导致系统故障处理办法

    1 远程登录系统 2 查看日志文件 catalina out 文件大小 root localhost cd usr local apache tomcat logs root localhost logs du h catalina out
  • 创建Javaweb、导入jar包、配置Tomcat

    一 第一大步 新建一个项目 文件 新建 项目 空项目 项目名称 可以随便起 与3要保持一致 一般情况3会在2后自动生成 点完成即可 第二大步 新建模块 文件 新建 模块 java模块 点击下一步即可 模块名称 起名字 完成 第三大步 让模块
  • mac pro 安装arduino ide 驱动

    mac pro 安装arduino ide 需要安装额外驱动去识别USB 直接安装下面文件即可解决
  • cas 5.2.0登陆界面添加验证码和校验功能

    本文分为4个部分 1 登录界面添加验证码 2 自定义登录对象 增加一个验证码字段 3 自定义cas的登录流程 完成自定义校验 4 返回自定错误信息 1 配置验证码 生成验证码 使用google的kaptcha 需引入jar的包如下
  • 凡科建站上传html,如何将自己设计的网页上传到网站上?如何把自己制作的网页上网?自己在本地建的网站,别人怎么访问?...

    如何将自己设计的网页上传到网站上 如何把自己制作的网页上网 自己在本地建的网站 别人怎么访问 下面就来一起看看吧 如何将自己设计的网页上传到网站上 首先租用空间保管网页和程序文件 租用域名 申请通过 关于免费建站 然后将空间IP地址分析到域
  • 区块链节点和区块区别_区块链的节点是什么?

    区块链节点 通常指的是区块链网络中的计算机 也就是说任何连接到区块链网络的计算机 包括手机 矿机等 都称为节点 比如说比特币网络是一个公有链 用户在自己的联网电脑上运行比特币程序时 这个电脑就成为比特币区块链网络中的一个节点 操作一个节点可
  • 容器类对象:枚举 NSEnumerator、字典

    一 枚举 NSEnumerator 依附于集合类 NSArray NSSet NSDictionary 没有用来创建实例的接口 NSEnumerator的nextObject方法可以遍历每个集合元素 结束返回nil 通过与while结合使用
  • Upload-labs文件上传漏洞(大小写绕过)——Pass05

    0 00 题目描述 真好把上一题的 htaccess文件也给黑名单限制了 与Pass04做个比较 0 01 源码分析 is upload false msg null if isset POST submit if file exists