Upload-Lab第13关:POST上传方式如何巧妙利用%00截断法绕过上传验证

news2024/11/26 4:52:20

第13关概述

Upload-Lab第13关中,服务器会对上传的文件进行严格的扩展名检查。只有符合白名单的扩展名(如.jpg.png等)才能成功上传。我们的目标是绕过这种检查,将恶意文件(如.php)上传到服务器。以下是第13关的源码:

$is_upload = false;
$msg = null;
if(isset($_POST['submit'])){
    $ext_arr = array('jpg','png','gif');
    $file_ext = substr($_FILES['upload_file']['name'],strrpos($_FILES['upload_file']['name'],".")+1);
    if(in_array($file_ext,$ext_arr)){
        $temp_file = $_FILES['upload_file']['tmp_name'];
        $img_path = $_POST['save_path']."/".rand(10, 99).date("YmdHis").".".$file_ext;

        if(move_uploaded_file($temp_file,$img_path)){
            $is_upload = true;
        } else {
            $msg = "上传失败";
        }
    } else {
        $msg = "只允许上传.jpg|.png|.gif类型文件!";
    }
}

这一关白名单,文件上传路径拼接生成,而且使用了post发送的数据进行拼接,我们可以控制post数据进行0x00截断绕过白名单。

POST不会对里面的数据自动解码,需要在Hex中修改。

什么是%00截断法?

%00截断法,即Null Byte注入,是一种利用空字节(\x00)截断字符串的方法。在C/C++等编程语言中,字符串以空字节作为结束符。通过在文件名中插入%00,可以使服务器在处理文件名时,误以为空字节后的内容不存在,从而达到绕过验证的目的。

攻击步骤

  1. 准备恶意文件

创建一个简单的PHP木马文件,例如 shell.php,内容如下:

<?php phpinfo(); ?>
  1. 上传文件

上传shell.php用BP抓包修改参数,然后修改后的结果为如下图所示:

../upload/ 路径下加上shell.php+ +号是为了方便后面修改Hex

+号的Hex是2b,这里我们要把它改为00,如下图所示:
修改前

修改后

  1. 验证上传

文件上传成功后,通过拷贝上传路径,如下图所示:
返回上传文件路径
访问上传后的文件,例如 http://localhost/shell.php,验证PHP代码是否被执行。如果成功,你将看到如下图的输出。

总结

Upload-Lab第13关的%00截断法提供了一个典型的文件上传漏洞绕过示例,通过理解和掌握这种技术,安全研究人员可以更好地识别和防御实际应用中的类似漏洞。同时,开发者也应注意采取多层防御措施,确保应用的安全性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2061178.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

图神经网络教程4-卷积图神经网络

介绍 卷积神经网络在涉及图像的预测任务上取得了最先进的性能。通过将权值学习核与输入图像卷积&#xff0c;CNN根据其视觉外观提取感兴趣的特征&#xff0c;无论它们在图像中的位置是哪里。虽然图像只是图的一个特殊情况(见图1 (a))&#xff0c;但是为图领域定义一个广义卷积…

了解同步带选择同步带

同步带和轮选型 同步带传动属于皮带传动&#xff0c;但是改进了传统皮带传动无法保持严格的传动比的打滑问题&#xff0c;传统皮带传动依靠皮带和皮带轮张紧时产生的摩擦力传输动力&#xff0c;但是从动轮遇到障碍或超载荷时&#xff0c;皮带会在皮带轮产生滑动。 解决打滑问题…

企业高性能web服务器【Nginx详解】

一.Web 服务基础介绍 1.1 互联网发展历程 1993年3月2日&#xff0c;中国科学院高能物理研究所租用AT&T公司的国际卫星信道建立的接入美国SLAC国家实 验室的64K专线正式开通&#xff0c;成为我国连入Internet的第一根专线。 1995年马云开始创业并推出了一个web网站 中国黄页…

【其它-高效处理小技巧】如何批量备份263企业邮箱邮件

如何批量备份263企业邮箱邮件 近期由于有人离职&#xff0c;邮箱要注销&#xff0c;之前邮箱内有5000多封沟通邮件&#xff0c;为避免将来找不到沟通过程&#xff0c;所以需要备份。 目的&#xff1a;一次性备份所有沟通邮件 方法一&#xff1a; 少于20封邮件&#xff0c;推荐…

基于vue框架的爱心公益网站532y9(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。

系统程序文件列表 项目功能&#xff1a;用户,志愿者,公益资讯,捐赠物资,公益项目,项目报名,公益类型 开题报告内容 基于Vue框架的爱心公益网站 开题报告 一、项目背景与意义 在快速发展的现代社会中&#xff0c;公益事业作为社会文明进步的重要标志&#xff0c;越来越受到…

创建GPTs,打造你的专属AI聊天机器人

在2023年11月的「OpenAI Devday」大会上&#xff0c;OpenAI再度带来了一系列令人瞩目的新功能&#xff0c;其中ChatGPT方面的突破尤为引人关注。而GPTs的亮相&#xff0c;不仅标志着个性化AI时代的到来&#xff0c;更为开发者和普通用户提供了前所未有的便利。接下来&#xff0…

WPS又崩了,在黑神话中挤出一条热搜!

吉祥知识星球http://mp.weixin.qq.com/s?__bizMzkwNjY1Mzc0Nw&mid2247485367&idx1&sn837891059c360ad60db7e9ac980a3321&chksmc0e47eebf793f7fdb8fcd7eed8ce29160cf79ba303b59858ba3a6660c6dac536774afb2a6330#rd 《网安面试指南》http://mp.weixin.qq.com/s?…

idea中如何不重启tomcat 即可看到修改内容变化

我 | 在这里 ⭐ 全栈开发攻城狮、全网10W粉丝、2022博客之星后端领域Top1、专家博主。 &#x1f393;擅长 指导毕设 | 论文指导 | 系统开发 | 毕业答辩 | 系统讲解等。已指导60位同学顺利毕业。持续接单中。。。 ✈️个人公众号&#xff1a;热爱技术的小郑。回复 Java全套视频教…

基于ElementPlus的分页表格组件ReTable

分页表格ReTable 组件实现基于 Vue3 Element Plus Typescript&#xff0c;同时引用 vueUse lodash-es tailwindCss (不影响功能&#xff0c;可忽略) 基于ElTable和ElPagination组件封装的分页表格&#xff0c;支持本地分页以及远程请求两种方式。本地数据分页自带全量数据的…

QT聊天室基于Tcp

server.cpp #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget),server(new QTcpServer(this)) // 给服务器指针对象实例化空间{ui->setupUi(this); }Widget::~Widget() {delete ui; }…

集团数字化转型方案(一)

集团数字化转型方案通过系统集成先进的物联网&#xff08;IoT&#xff09;、大数据分析、人工智能&#xff08;AI&#xff09;和云计算技术&#xff0c;构建一个全面智能化的运营生态系统&#xff0c;涵盖从数据驱动的决策支持、智能化业务流程优化、到全渠道客户体验提升的各个…

【算法基础实验】图论-最小生成树-Prim的即时实现

理论知识 Prim算法是一种用于计算加权无向图的最小生成树&#xff08;MST, Minimum Spanning Tree&#xff09;的贪心算法。最小生成树是一个连通的无向图的子图&#xff0c;它包含所有的顶点且总权重最小。Prim算法从一个起始顶点开始&#xff0c;不断将权重最小的边加入生成…

CTFHUB | web进阶 | JSON Web Token | 无签名

一些JWT库也支持none算法&#xff0c;即不使用签名算法。当alg字段为空时&#xff0c;后端将不执行签名验证 开启题目 账号密码随便输&#xff0c;登录之后显示只有 admin 可以获得 flag 在此页面抓包发到 repeater&#xff0c;这里我们需要用到一个 Burp 插件&#xff0c;按图…

科研绘图配色大全

目录 01 颜色网站 1.1 Material 1.1.1 tailwindcolor 1.2 Trending Color Palettes1.3 Material Palette 1.4 Graphs Colors 1.5 RGB颜色值与十六进制颜色码转换 1.6 colorbrewer 1.7 优设 1.8 Chinese Colors1.9 handpicked colors 02 科研绘图配色方案 2.1 常见科技…

干货:2024必备的四大PDF编辑器推荐!

面对PDF文件的编辑需求&#xff0c;你是否感到无从下手&#xff1f;那么&#xff0c;今天就为大家推荐几款实用的PDF编辑工具&#xff0c;让你轻松应对各种PDF编辑难题。 福昕PDF编辑器 链接&#xff1a;editor.foxitsoftware.cn 福昕PDF编辑器多功能专业级是我PDF编辑器。它…

【C++例题 / 训练】二分算法(模板 例题)

引言 二分也就是二分查找&#xff0c;又叫折半查找。这种算法正如其名&#xff0c;每一次都要分一半。 二分算法可以分为二分查找和二分答案。 以在一个升序数组中查找一个数为例&#xff0c;每次考察数组当前部分的中间元素&#xff0c;如果中间元素刚好是要找的&#xff0…

王牌功能 | 法大大“证据管理”,让关键数据坚不可摧!

到底还能不能好好签合同… 法大大证据管理功能&#xff0c;基于电子合同签署全流程&#xff0c;为使用法大大电子签的机构及个人用户提供互联网数据电文的实时存证&#xff0c;并由第三方机构进行证据固化&#xff0c;将存证的数据电文转化成可读性更高、具有司法效力的证明材料…

多线程、多进程,还是异步?-- Python 并发 API 如何选择

如何选择正确的 Python 并发 API模块 &#xff1f; Python 标准库提供了三种并发 API &#xff0c; 如何知道你的项目应该使用哪个 API&#xff1f; 在本教程将带逐步了解各API的特性、区别以及各自应用场景&#xff0c;指导你选择最合适的并发 API。 多线程、多进程&#xff0…

音频采集spring_ws_webrtc (html采集麦克风转gb711并发送广播播放)完整案例

下载地址&#xff1a;http://www.gxcode.top/code 项目说明 springbootwebscoektwebrtc 项目通过前端webrtc采集麦克风声音&#xff0c;通过websocket发送后台&#xff0c;然后处理成g711-alaw字节数据发生给广播UDP并播放。 后台处理项目使用线程池(5个线程)接受webrtc数据并…

JAVA基础:字节字符转换流

前言 当我们使用流读取数据时&#xff0c;如果这个数据中含有中文&#xff0c;我们对这个数据进行操作就会出现乱码问题&#xff0c;这时候我们要使用字节字符转换流来处理一下数据。 字节字符转换流 字节字符转换流是一个过程流 字节字符转换流是一个字符流&#xff0c;所…