【文件上传绕过】八、::$DATA上传绕过

2023-11-12


一、利用Windows特性

在window的时候如果文件名+"::$DATA"会把::$DATA之后的数据当成文件流处理,不会检测后缀名,且保持::$DATA之前的文件名,他的目的就是不检查后缀名

例如:"phpinfo.php::$DATA"Windows会自动去掉末尾的::$DATA变成"phpinfo.php"

二、源码

源码中未过滤::$DATA

$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 = strtolower($file_ext); //转换为小写
        $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 . '文件夹不存在,请手工创建!';
    }
}

代码中没有对::$DATA进行处理

三、使用burpsuite抓包在文件后缀加::$DATA绕过

1、抓包

在这里插入图片描述
2、上传文件

在这里插入图片描述
3、访问文件

在这里插入图片描述

上传到服务器的文件在Windows中会自动去掉::$DATA

在这里插入图片描述

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

【文件上传绕过】八、::$DATA上传绕过 的相关文章

  • 如何访问带有美元符号的 PHP 对象属性?

    我有一个 PHP 对象 其属性中有一个美元 符号 如何访问该属性的内容 例子 echo object gt variable Ok echo object gt variable WithDollar Syntax error With 变
  • 在同一服务器上的 2 个子域中安装 2 个 WordPress 时共享用户

    我有 2 个 WordPress 网站 位于 2 个不同的子域中 例如test1 abc com and test2 abc com 这两个网站都激活了 wp require 插件 只有登录用户才能看到该网站 我们想要创建一个系统 如果用户
  • RuntimeException - 会话存储未根据请求设置 - Laravel Socialite - Facebook

    我在用着Laravel 5 7 and Laravel Socialite 3 1 我想使用登录Facebook我刚刚为此项目配置了应用程序 这些是我为此配置的主要文件 env FACEBOOK CLIENT ID FACEBOOK CLI
  • 通过 PEAR 安装 PHPUnit

    我安装时遇到问题PHPUnit 3 4 6 via 梨1 9 0 当我发现频道后pear phpunit de并尝试使用以下命令之一 pear 安装 phpunit PHPUnit pear 安装 alldeps phpunit PHPUn
  • 将我的 Laravel 连接到外部数据库

    如何将 Laravel 连接到外部数据库 示例 我的本地计算机上有一个 Laravel 它在 xampp 上运行 我希望它连接到云服务器数据库 打开 env文件并编辑它 只需设置正确的外部数据库凭据 DB CONNECTION mysql
  • 如何通过开始索引和结束索引提取子字符串?

    str HelloWorld sub substr str 3 5 echo sub prints loWor 我知道 substr 采用第一个参数 第二个参数是开始索引 而第三个参数是要提取的子字符串长度 我需要的是通过提取子字符串起始索
  • Symfony 4 生产模式错误处理页面内存耗尽

    我将我的项目设置为prod模式在 env除了自定义错误页面之外的所有内容似乎都有效 我将此作为我的 404 树枝模板 templates bundles TwigBundle Exception error404 html twig inc
  • Monolog:通过邮件发送错误日志会导致每个发送的错误都会收到一封额外的邮件

    对于通过邮件发送的每个错误日志 我们都会收到另一封额外的电子邮件 其中包含 2 行 smtp 调试日志消息 新创建的 symfony 演示 symfony new demo 配置独白以通过邮件发送错误消息 如docs https symfo
  • 如何用 C 语言通过 HTTP 协议发送图像?

    我是一名正在做网络服务器练习的学生 我需要一些帮助 我的网络服务器在文本页面上运行良好 但是每当浏览器发送一个 GET img jpg HTTP 1 1请求 我不知道如何处理 我听说 HTTP 协议是基于文本的 那么如何在 HTTP 响应中
  • websockets 如何处理同一浏览器的两个选项卡

    I have 1 个 PHP 服务器 提供 http 请求 和 1 node js 发布更新的数据消息 每个连接都带有 websocket php 服务器设置其 cookie 在一个浏览器中 此 cookie 可在所有选项卡中使用 当浏览器
  • WordPress 子主题覆盖父主题包括

    我正在创建 WordPress 子主题 需要覆盖某些小部件模板 我正在尝试使用此方法来覆盖父主题调用 覆盖主题功能的正确方法 http www venutip com content right way override theme fun
  • POSTed 数组保留其值

    今天 我注意到我的一个 WordPress 安装的行为方式非常奇怪 每当我从仪表板更新帖子时 它的一些额外输入都会保留它们已有的值 所有这些都是多维数组 例如 post php post 123 action 编辑
  • 一次用 \r\n & \n & \r 分解字符串? [复制]

    这个问题在这里已经有答案了 我想按行分割字符串 但我希望它基于所有主要使用的换行符 n r n r 并返回一个包含每一行的数组 您可以使用正则表达式和preg split http php net preg split反而 lines pr
  • 即使在双引号内或使用 PHP_EOL,PHP echo 也不打印换行符

    这是一张照片剪辑 我认为它很清楚 这真让我抓狂 我似乎无法让 php 在我的本地主机 使用 xampp 或在线 PHP 解释器上打印换行符 如果你想在 php 中使用 HTML 标签 试试这个 echo dkljaks aalksja kl
  • ElasticSearch 和 PHP 中的多个字段搜索

    我正在使用最新版本弹性搜索 PHP https github com elasticsearch elasticsearch php以及最新版本的 MongoDB 和 ElasticSearch 我需要对可以包含一个或多个值的多个字段进行搜
  • PHP 使用主键和辅助键对多维数组进行排序[重复]

    这个问题在这里已经有答案了 如何按主键和辅助键对多维数组进行排序 例如 假设有以下数组 result array result 0 prio 1 result 0 date 2010 02 28 result 0 post February
  • 使用多个 WHERE 子句更新 Codeigniter 中的批次

    我查看了 CI 用户指南来了解如何处理update batch 并且它似乎只接受一个索引来匹配要更新的行 但在我的例子中 我需要指定两个索引 例如lang and id page我一起用作索引 这样的lang en id page 115是
  • Laravel 5 命名约定

    我对 Laravel 约定有点困惑 因为我是这个框架的新手 我正在关注 Jeffrey Way 他使用的 Laracasts 视频Plural对于控制器名称 E g 页面控制器 卡片控制器 帖子控制器 但如果我参考官方文档Laravel g
  • Laravel 4.2 Composer 安装错误:“无法扫描类”

    我想通过 Composer 在新的 Laravel 4 2 安装上安装一些软件包 但是 我遇到了例外 这是我的作曲家文件 name laravel laravel description The Laravel Framework keyw
  • 通过 IP 地址限制 Laravel 错误日志

    When debug被设定为true在 Laravel 的app config php有什么方法可以限制结果Whoops包含对某些 IP 地址的堆栈跟踪的错误页面 并且不在该列表中的 IP 显示特定视图 Thanks 没有内置 但是你可能可

随机推荐

  • Ethercat--学习笔记

    一 数据传输方式 PDO SDO 主站与从站进行数据交互的方式主要通过PDO和SDO 即过程数据和邮箱数据其概念与CANOpen中的概念相同 一 PDO 过程数据对象 过程数据用来传输周期性的数据 PDO由三个数据缓冲区组成 类似于一个FI
  • 【Opencv】一文搞懂PIL、cv2、pyplot.imshow()显示图片颜色/色彩偏差问题

    原始图片 这里用眼底血管分割数据集的图片作为例子 导入图片方法及通道区别 PIL from PIL import Image from matplotlib import pyplot as plt PIL输入通道为RGB img Imag
  • SpringBoot集成PageHelper 实现分页功能。

    简介 今天毕设有用到PageHelper 看了几篇博客 写的不是很一目了然 自己总记一下 希望能帮助到别人 大佬看见该批评就批评该指点就指点 谢谢 开始 引入
  • js预解析最强面试题 看看你会不会

    话不多说 直接上题目 f1 console log c console log b console log a function f1 var a b c 9 console log a console log b console log
  • XCode 命令行打包命令

    1 列出项目信息 xcodebuild list project
  • 第二十一课,几何着色器(使用篇-爆破效果)

    爆破效果 原理 将每一个片元沿三角形法向量方向移动一段距离 核心代码 避坑点 vert version 450 core layout location 0 in vec3 aPos layout location 1 in vec3 aN
  • 0501——0505 Vue学习

    总结一下草稿箱的网课记录 说4小时我还是看了不止4天 Vue Vue程序 导入开放版本的Vue js 创建Vue实例对象 设置el属性和data属性 使用简洁的模板语法把数据渲染到页面上 el挂载点 el是用来设置vue实例挂载 管理 的元
  • dubbo validation 参数验证 参数校验 @NotNull 自定义响应

    使用dubbo 框架 使用 validation 进行参数校验 首先创建类 import com fasterxml jackson annotation JsonProperty import lombok Getter import l
  • 你开发的软件不知道哪里跑飞闪退了?这个办法可以帮忙定位(查看dump)

    QT生成dump pdb文件 使用windbg打开分析查看堆栈 定位程序崩溃位置 你开发的软件不知道哪里跑飞闪退了 这个办法可以帮忙定位 https zhuanlan zhihu com p 102103083
  • 5.three.js灯光与阴影

    代码来源于哔哩哔哩老陈three js教学 1 灯光与阴影的关系与设置 import as THREE from three 导入轨道控制器 import OrbitControls from three examples jsm cont
  • chrome谷歌浏览器导入密码和导出密码的方法

    chrome谷歌浏览器导入密码和导出密码的方法 导出账号密码 导入账号密码 有时候大家遇到换了新电脑 或者公司需要调整电脑 或者说需要导入别人电脑上谷歌浏览器存的账号密码 发现可以导出密码 但是没有导入密码的选项 就很烦 这里教大家如何导出
  • 如何在数据验证单元格区域禁用粘贴

    为了确保数据准确性 在A列设置了数据验证 可以输入值的列表如下图所示 但是如果用户使用复制 粘贴 仍然可以输入其他值 如下图所示 使用如下事件可以实现禁止粘贴 Private Sub Worksheet Change ByVal Targe
  • TCP连接的三次握手四次挥手——类比异地恋情侣开始交往和分手(通俗易懂)

    首先 要详细解释的 先看下面两篇文章 这篇文章只是一个类比 可以辅助理解和记忆 计算机网络 TCP三次握手详解为什么两次不行 计算机网络 TCP四次挥手过程详解 三次握手 开始交往 男 写一封情书 我喜欢你 我们可以在一起吗 即使我们分隔两
  • python(11):python读取excel、csv文件

    1 python读取excel文件 要读取Excel表格的指定行和列范围 可以使用Python中的第三方库pandas pandas库提供了强大的数据分析和处理工具 包括读取和处理Excel文件的功能 以下是一个示例代码 演示了如何使用pa
  • 操作系统实验 - 题目二 进程调度算法的实现

    2 1 题目的主要研究内容及预期达到的目标 设计目的 理解进程调度相关理论 掌握时间片调度原理 掌握高优先级调度原理 课题描述 本课题主要针对操作系统中进程调度相关理论进行设计 要求编写程序并进行测试 该程序可以对多个进程进行调度 调度算法
  • 常用公差配合表图_机械设计公差与配合及其标注方法

    一 公差与配合的概念 一 零件的互换性 在成批生产进行机器装配时 要求一批相配合的零件只要按零件 图要求加工出来 不经任何选择或修配 任取一对装配起来 就能达到设计的工作性能要求 零件间的这种性质称为互换性 零件具有互换性 可给机器装配 修
  • linux性能命令详解

    1 查看进程相关信息 1 1 查看当前进程 查看当前进程的启动命令 PID为线程ID 1 ps ef grep 进程信息 获得进程PID 2 cd proc PID 3 ll proc PID 显示的文件夹 cwd符号链接的是进程运行目录
  • feign GET请求不支持对象传参的坑

    问题 GetMapping getByParam String hello Student student throws Exception 如上 feign调用报错500 解决方法 增加 SpringQueryMap GetMapping
  • xxx is not in the sudoers file.This incident will be reported错误

    一 问题解决 在执行sudo命令时会有如下提示 xx is not in the sudoers file This incident will be reported 原因分析 一般这种情况是创建了新用户 没有对应修改sudoers文件或
  • 【文件上传绕过】八、::$DATA上传绕过

    文章目录 一 利用Windows特性 二 源码 三 使用burpsuite抓包在文件后缀加 DATA绕过 一 利用Windows特性 在window的时候如果文件名 DATA 会把 DATA之后的数据当成文件流处理 不会检测后缀名 且保持