upload-labs关卡12(基于白名单的%00截断绕过)通关思路

news2025/1/15 17:36:17

文章目录

  • 前言
  • 一、靶场需要了解的前置知识
    • 1、%00截断
    • 2、0x00截断
    • 3、00截断的使用条件
      • 1、php版本小于5.3.29
      • 2、magic_quotes_gpc = Off
  • 二、靶场第十二关通关思路
    • 1、看源代码
    • 2、bp抓包%00截断
    • 3、验证文件是否上传成功
  • 总结


前言

此文章只用于学习和反思巩固文件上传漏洞知识,禁止用于做非法攻击。注意靶场是可以练习的平台,不能随意去尚未授权的网站做渗透测试!!!


一、靶场需要了解的前置知识

1、%00截断

%00截断常在url中get请求使用,在url中%00表示ascll码中的0 ,而ascii中0作为特殊字符保留,表示字符串结束,所以当url中出现%00时就会认为读取已结束。所以一般文件上传绕过%00会在路径上使用。

http://xxx.com?filename=test.php%00.txt

这样服务器读取%00的时候就会中断读取,造成只读取了test.php。

2、0x00截断

0x开头表示16进制,0在十六进制中是00, 0x00就是%00解码成的16进制。其实和%00的原理没有太大区别,只是使用的方式不一样,这个0x00是手动修改为16进制变成的,通常通过bp修改,其实%00解码就是0x00,0x00通常在post请求使用。

3、00截断的使用条件

1、php版本小于5.3.29

2、magic_quotes_gpc = Off

去php.ini修改就行

二、靶场第十二关通关思路

  • 1、看源代码
  • 2、bp抓包%00截断
  • 3、验证文件是否上传成功

1、看源代码

$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 = $_GET['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类型文件!";
    }
}

发现这是一个白名单过滤,只能上传jpg、png、gif文件。那么白名单绕过最常见的方法就是00截断了。这里发现有一个路径拼接,也就是如果上传的文件后缀名符合白名单就会随机命名文件然后拼接到文件所在的绝对路径上。那么我们可以在文件路径进行截断,把成功上传的文件后缀名截断掉,保留我们需要的php后缀名。

2、bp抓包%00截断

这里我上传含有一句话木马的文件为23.jpg,然后%00截断让其上传23.php。因为这里的save_path是get传参,也就是说url会把%00自动解码成空字符,上传后服务器就会以为是结束符就不会读取拼接上来的jpg文件了。
在这里插入图片描述

3、验证文件是否上传成功

这里访问的时候记得把9020231122143153.jpg去掉,因为成功上传的其实是23.php
最后蚁剑连接成功。
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述


总结

这一关是基于白名单的%00截断绕过,原理就是%00其实在计算机眼里是结束符,我们通过路径截断,让其拼接的正常jpg文件变成我们修改的php文件。此文章是小白自己为了巩固文件上传漏洞而写的,大佬路过请多指教!

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

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

相关文章

使用Java Servlet生成动态二维码

文章目录 引入ZXing库创建QRCodeServlet部署到Servlet容器拓展功能1. 动态生成二维码内容2. 调整二维码尺寸3. 错误修正级别4. 日志输出 结语 🎉欢迎来到Java学习路线专栏~探索Java中的静态变量与实例变量 ☆* o(≧▽≦)o *☆嗨~我是IT陈寒🍹✨博客主页&…

虚拟主播解决方案

虚拟主播作为一种新兴的技术,正在逐渐改变我们的生活和工作方式。美摄科技,作为行业的领导者,致力于为企业提供一站式的虚拟主播技术解决方案,帮助企业实现数字化转型。 美摄科技的虚拟主播解决方案,是一种将文本内容…

Spark的通用运行流程与Spark YARN Cluster 模式的运行流程

Spark的通用运行流程 集群启动后Worker节点会向Master节点心跳汇报资源Client向Driver提交APP,根据不同的运行模式在不同的地方创建Driver。Driver以粗粒度的方式向Master注册应用并申请资源(在Application执行之前,将所有的资源申请完毕&…

用spring发送http请求

在Spring中&#xff0c;你可以使用RestTemplate或WebClient来发送HTTP请求。下面分别给出使用这两个类的简单示例。 现在pom.xml中导入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artif…

2023年中国边缘计算网关现状及发展趋势分析[图]

边缘计算网关是一种可以在设备上运行本地计算、消息通信、数据缓存等功能的工业智能网关&#xff0c;可以在无需联网的情况下实现设备的本地联动以及数据处理分析。边缘计算网关是一种连接物联网设备和云端服务的关键技术&#xff0c;它可以在设备和云端之间建立一个安全、高效…

CCF CSP认证 历年题目自练Day49

题目一 此题用暴力枚举做过&#xff08;80分&#xff09;现如今终于用二维前缀和做到满分。 试题编号&#xff1a; 202309-2 试题名称&#xff1a; 坐标变换&#xff08;其二&#xff09; 时间限制&#xff1a; 2.0s 内存限制&#xff1a; 512.0MB 问题描述&#xff1a; 问题…

python基于GCN(图卷积神经网络模型)和LSTM(长短期记忆神经网络模型)开发构建污染物时间序列预测模型

在以往的时间序列预测建模中广泛使用的是回归类算法模型和RNN类的算法模型&#xff0c;相对来说技术栈会更稳定一些&#xff0c;最近有一个实际业务场景的需求&#xff0c;在建模的过程中要综合考虑其余点位的影响依赖&#xff0c;这时候我想到了之前做过的交通流量和速度预测相…

【软件测试】接口——基本测试流程

1、接口测试需求获取 &#xff08;1&#xff09;获取接口文档 &#xff08;2&#xff09;通过接口文档获取接口信息 &#xff08;3&#xff09;确认接口测试需求 2、 接口测试计划编写 &#xff08;1&#xff09;目标&#xff1a;确认需求、资源、方法、进度方案 &#x…

【VScode】安装配置、插件及远程SSH连接

一、VSCode安装 二、配置安装插件 三、配置远程连接SSH 四、MinGW 一、VSCode安装 VS官网 Visual Studio Code - Code Editing. Redefined下载安装包&#xff1a; 二、配置安装插件 安装中文插件 配置字体为20 配置文件–>首选项->设置->Font Size为20 设置 VSC…

想分析全国用电及煤气、液化石油气供应利用情况,这部分数据对你有帮助!

随着经济的发展和人民生活水平的提高&#xff0c;能源的需求量越来越大。其中&#xff0c;电力和煤气、液化石油气等能源的供应利用情况与我们的日常生活息息相关。 今天我们根据《中国城市统计年鉴》统计的中国地级及以上城市的煤气及液化石油气供应及利用情况的指标&#xff…

芯片被磨掉型号分辨不出怎么解决?

很多电子工程师&#xff0c;在芯片或单片机解密时&#xff0c;经常会遇到芯片被加密的情况&#xff0c;更糟糕的是这个芯片的型号被打磨了&#xff0c;无法确定其准确型号&#xff0c;那么如何解决&#xff1f;今天凡小亿开课好好讲讲&#xff0c;希望对小伙伴们有所帮助。 1、…

11.6AOP

一.AOP是什么 是面向切面编程,是对某一类事情的集中处理. 二.解决的问题 三.AOP的组成 四.实现步骤 1.添加依赖(版本要对应): maven仓库链接 2.添加两个注解 3.定义切点 4.通知 5.环绕通知 五.execution表达式 六.AOP原理 1.建立在动态代理的基础上,对方法级别的拦截. 2.…

Arcgis中通过函数实现字符串截取

效果 从字符串中提取最右侧的符号&#xff0c;如“/”后面的字符串 步骤 1、VB dim bbindexinstrrev( [WGCJ] ,"/")bbright( [WGCJ] ,len( [WGCJ] )- index )2、python def bb(aa):index(aa.rfind("/"))bbaa[index1:]return bb

基于docker实现JMeter分布式压测

为什么需要分布式&#xff1f; 在工作中经常需要对一些关键接口做高QPS的压测&#xff0c;JMeter是由Java 语言开发&#xff0c;没创建一个线程&#xff08;虚拟用户&#xff09;&#xff0c;JVM默认会为每个线程分配1M的堆栈内存空间。受限于单台试压机的配置很难实现太高的并…

在windows笔记本中安装tensorflow1.13.2版本的gpu环境2

tensorflow1.13.2版本的gpu环境 看python-anacona的安装只需要看1.1部分即可 目录 1.1 Anaconda安装 1.2 tensorflow-gpu安装 1.3 python编译器-pycharm安装 1.1 Anaconda安装 从镜像源处下载anaconda&#xff0c;地址&#xff1a;Index of /anaconda/archive/ | 北京…

【无标题】dp80采集机和机器人通信相关框架总结

采血机器人通信解析相关框架总结: 类似于dp80,将整个过程进行了分解如下: 类似于dp80,将整个过程进行了分解如下: 上位机界面在进行点击操作的时候,先是通信协议的解析,解析后改变采血的控制状态如下: Dp80主要框架解析࿱

Godot

前言 为什么要研究开源引擎 主要原因有&#xff1a; 可以享受“信创”政策的红利&#xff0c;非常有利于承接政府项目。中美脱钩背景下&#xff0c;国家提出了“信创”政策。这个政策的核心就是&#xff0c;核心技术上自主可控。涉及的产业包括&#xff1a;芯片、操作系统、数据…

Vue 3 渲染机制解密:从模板到页面的魔法

Vue 3 渲染机制解密 前言Vue 3的响应性系统1. **Reactivity API:**2. **Proxy 对象:**3. **Getter 和 Setter:**4. **依赖追踪:**5. **批量更新:**6. **异步更新:**7. **递归追踪:**8. **删除属性:** 虚拟DOM的角色1. **减少直接操作真实 DOM:**2. **高效的批量更新:**3. **跨平…

sonar对webgoat进行静态扫描

安装sonar并配置 docker安装sonarqube&#xff0c;sonarQube静态代码扫描 - Joson6350 - 博客园 (cnblogs.com) 对webgoat进行sonar扫描 扫描结果 bugs Change this condition so that it does not always evaluate to "false" 意思是这里的else if语句不会执行…

git merge 和 git rebase

一、是什么 在使用 git 进行版本管理的项目中&#xff0c;当完成一个特性的开发并将其合并到 master 分支时&#xff0c;会有两种方式&#xff1a; git merge git rebasegit rebase 与 git merge都有相同的作用&#xff0c;都是将一个分支的提交合并到另一分支上&#xff0c;…