upload-labs靶场Pass-21

news2024/10/30 16:24:54

upload-labs靶场Pass-21

本关上传方法众多,但是应该考察的是数组后缀绕过,所以我的上传围绕此展开

1.分析源码

$is_upload = false; // 初始化上传状态为false
$msg = null; // 初始化消息变量为null

// 检查是否有文件上传
if(!empty($_FILES['upload_file'])){
    // 定义允许的MIME类型
    $allow_type = array('image/jpeg','image/png','image/gif');
    
    // 检查上传文件的MIME类型是否在允许的类型中
    if(!in_array($_FILES['upload_file']['type'],$allow_type)){
        $msg = "禁止上传该类型文件!"; // 如果不允许,设置错误消息
    }else{
        // 检查文件名,如果没有提供保存名称,则使用上传文件的原始名称
        $file = empty($_POST['save_name']) ? $_FILES['upload_file']['name'] : $_POST['save_name'];
        
        // 将文件名按点分割为数组,转换为小写
        if (!is_array($file)) {
            $file = explode('.', strtolower($file));
        }

        // 获取文件扩展名
        $ext = end($file);
        // 定义允许的文件后缀
        $allow_suffix = array('jpg','png','gif');
        
        // 检查文件扩展名是否在允许的后缀中
        if (!in_array($ext, $allow_suffix)) {
            $msg = "禁止上传该后缀文件!"; // 如果不允许,设置错误消息
        }else{
            // 生成最终的文件名
            $file_name = reset($file) . '.' . $file[count($file) - 1];
            // 获取临时文件路径
            $temp_file = $_FILES['upload_file']['tmp_name'];
            // 定义文件上传的目标路径
            $img_path = UPLOAD_PATH . '/' .$file_name;
            
            // 尝试将临时文件移动到目标路径
            if (move_uploaded_file($temp_file, $img_path)) {
                $msg = "文件上传成功!"; // 上传成功,设置成功消息
                $is_upload = true; // 更新上传状态为true
            } else {
                $msg = "文件上传失败!"; // 上传失败,设置错误消息
            }
        }
    }
}else{
    $msg = "请选择要上传的文件!"; // 如果没有文件上传,设置错误消息
}

审计代码发现用之前的方法,比如文件包含漏洞之类就可以完成上传,但本关测试的应该是数组后缀上传。

 if (!is_array($file)) {
            $file = explode('.', strtolower($file));
        }

2.上传原理

==此处判断$fiel是不是数组,不是数组就将文件名按点分开为数组,然后继续执行,通过end()函数获取上传文件后缀,在进行白名单比 对。如果是数组,直接进行白名单比对。
正常我们上传一个比如test.gif文件,先分割为数组,end获取末尾gif后缀,与白名单比对,无误,上传
我们可以在包里修改使其上传一个数字,比如将制作的test.gif,抓包修改包里命名为数组,test php gif,在检查时就会用末尾的gif检查,发现符合白名单,绕过成功,保存的时候,Windows保存为test.php

==

3.上传

上传文件准备
test.php

<?php
phpinfo();
?>

上传
在这里插入图片描述
抓包
在这里插入图片描述
修改
在这里插入图片描述
上传成功
在这里插入图片描述
OVER!!!

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

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

相关文章

【undefined reference to xxx】zookeeper库编译和安装 / sylar项目ubuntu20系统编译

最近学习sylar项目&#xff0c;编译项目时遇到链接库不匹配的问题&#xff0c;记录下自己解决问题过程&#xff0c;虽然过程很艰难&#xff0c;但还是解决了&#xff0c;以下内容供大家参考&#xff01; undefined reference to 问题分析 项目编译报错 /usr/bin/ld: ../lib/lib…

网络服务ssh

Linux 网络基础 一、知识回顾 网络地址&#xff1a;互联网协议地址&#xff08;IP地址&#xff09;为互联网上每一个网络或主机分配一个逻辑地址&#xff0c;IP地址工作在网络层。 ​ IP的分类&#xff1a;IPV4 IPV6 物理地址&#xff1a;物理地址&#xff08;MAC地址&…

Git获取本地仓库和常用指令

一、获取本地仓库 1&#xff09;在电脑的任意位置创建一个空目录&#xff08;例如test01&#xff09;作为我们的本地Git仓库 2&#xff09;进入这个目录中&#xff0c;点击右键打开Git bash窗口 3&#xff09;执行命令git init&#xff08;初始化当前目录为一个git仓库&…

解决报错:JDK版本不正确

加载maven过程中&#xff0c;控制台报错&#xff1a; Unable to make field private com.sun.tools.javac.processing.JavacProcessingEnvironment$DiscoveredProcessors com.sun.tools.javac.processing.JavacProcessingEnvironment.discoveredProcs accessible: module jdk.…

Webserver(1.8)操作函数

目录 文件属性操作函数access函数chmod函数chown函数truncate函数 目录操作函数mkdir函数rmdir函数rename函数chdir函数*getcwd函数 目录遍历函数*opendir函数*readdir函数closedir函数 dup、dup2函数dupdup2 fcntl函数 文件属性操作函数 access函数 判断某个文件是否有某个权…

解决ElasticSearch启动成功却无法在浏览器访问问题

目录 前言&#xff1a; 问题复现 &#xff1a; 解决问题&#xff1a; 1、修改sysctl.conf文件 2、在sysctl.conf文件增加这段东西 3、 然后保存退出&#xff0c;输入以下命令使其生效 结语&#xff1a; 前言&#xff1a; 这篇文章是小白我今天突然启动es&#xff0c;发现e…

【tomcat系列漏洞利用】

Tomcat 服务器是一个开源的轻量级Web应用服务器&#xff0c;在中小型系统和并发量小的场合下被普遍使用。主要组件&#xff1a;服务器Server&#xff0c;服务Service&#xff0c;连接器Connector、容器Container。连接器Connector和容器Container是Tomcat的核心。一个Container…

如何在Linux系统中使用SSH Key认证进行无密码登录

如何在Linux系统中使用SSH Key认证进行无密码登录 SSH Key认证简介 安装SSH 在Debian/Ubuntu系统中检查 在CentOS/RHEL系统中检查 生成SSH密钥 复制公钥到远程服务器 配置SSH服务端 编辑SSH配置文件 重启SSH服务 测试无密码登录 SSH Key认证的高级配置 设置密钥的权限 限制密…

开发流程初学者指南——需求分析

目录 从零开始理解需求分析什么是需求分析&#xff1f;需求分析的目标需求分析的基本原则需求分析的各个阶段需求分析的常用方法和工具编写需求文档总结 从零开始理解需求分析 需求分析是软件开发过程中不可或缺的一环&#xff0c;它帮助我们明确用户的需求&#xff0c;确保最…

MySQL Workbench工作台汉化

一、下载汉化包 通过百度网盘分享的文件&#xff1a;MySQL汉化包.rar 链接&#xff1a;https://pan.baidu.com/s/1PaJSU9dvVnQQWEESHSue5Q 二、汉化过程 注意&#xff1a;替换之前一定要记得把两个文件复制出来存着&#xff0c;防止替换失败修改了文件 找到MySQL的工作台da…

AI数字人应用场景超全解析(下)

​​一、AI数字人技术发展趋势 1、技术迭代与创新 AI数字人技术的迅猛进步&#xff0c;得益于人工智能、计算机图形学、动作捕捉及3D建模等领域的突破性进展。深度学习算法的优化&#xff0c;让AI数字人的语言理解和生成能力愈发自然&#xff0c;能够提供更加精准和个性化的交…

实战-任意文件下载

实战-任意文件下载 1、开局 开局一个弱口令&#xff0c;正常来讲我们一般是弱口令或者sql&#xff0c;或者未授权 那么这次运气比较好&#xff0c;直接弱口令进去了 直接访问看看有没有功能点&#xff0c;正常做测试我们一定要先找功能点 发现一个文件上传点&#xff0c;不…

激光自动对焦显微系统的原理和作用

原理 激光自动对焦原理&#xff1a; &#xff08;1&#xff09;激光自动对焦显微系统利用激光束的自聚焦特性实现精确焦点控制。在检测过程中&#xff0c;激光束通过照明针孔形成点光源&#xff0c;对样品表面进行扫描。 &#xff08;2&#xff09;被照射的点在探测针孔处成像…

【数据集】全球30弧秒网格人为热通量数据(AHF)

【数据集】全球30弧秒网格人为热通量数据(AHF) 数据概述数据下载数据处理基于Python绘制研究区内人为热通量数据(AHF)基于Python插值获取2020年人为热通量数据参考人为热通量(anthropogenic heat flux)数据是指由人类活动引起的地表热量变化的定量数据。这些数据通常用于…

电子邮件防泄密系统怎么选?分享五款邮件加密工具,好不好用你说的算!(宝藏篇)

电子邮件防泄密系统怎么选&#xff1f; 根据国际IT安全公司的研究&#xff0c;有70%的企业在担心电子邮件可能泄密&#xff0c;约一半员工承认曾错误发送不当或机密邮件。 尽管许多企业已经意识到了"邮件危机"&#xff0c;但仍未找到有效解决方案。 邮件发送不受控…

由小流氓从线下转线上看软件需求的第一性原理

在我上初、高中的时候&#xff0c;我们这里的治安是很差的&#xff0c;人称“匪城”&#xff01;街面上游荡着大大小小的流氓、二流子&#xff01;时不时干上一架&#xff0c;欺负一下老实人或做小生意的&#xff0c;我们这里市民真是不堪其扰&#xff01;很多电视剧将这些流氓…

Oracle+11g+笔记(8)-备份与恢复机制

Oracle11g笔记(8)-备份与恢复机制 8、备份与恢复机制 8.1 备份与恢复的方法 数据库的备份是对数据库信息的一种操作系统备份。这些信息可能是数据库的物理结构文件&#xff0c;也可能是某一部分数 据。在数据库正常运行时&#xff0c;就应该考虑到数据库可能出现故障&#…

excel斜线表头

检验数据验证对象 鼠标放在检验数据 验证对象中间&#xff0c;altenter 之后空格 选中格子&#xff0c;右键单元格格式&#xff0c; 完成 如果是需要多分割&#xff0c;操作一样&#xff0c;在画斜线的时候会有区别&#xff0c;在插入里面用直线画斜线即可 在表格插入的时…

基于matlab的线性卷积演示系统

文章目录 前言1. 卷积的简单介绍1.1 翻褶1.2 移位1.3 相乘1.4相加1.5 整体的运行效果展示 2.App Designer的介绍3.具体的开发步骤3.1 声明成员变量3.2 设计基本布局3.3 编写回调函数 4.运行展示结语 前言 本篇文章按照如下要求&#xff0c;完成线性卷积演示系统 (1)用matlab完…

WPF+MVVM案例实战(九)- 霓虹灯字效果控件封装实现

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 1、运行效果2、主菜单与界面实现1、主菜单2、霓虹灯字界面实现3、字体资源获取3、控件封装1.创建自定义控件2、依赖属性实现3、封装控件使用4、运行效果4、源代码获取1、运行效果 2、主菜单与界面实…