首页 > 其他分享 >upload-labs靶场Pass-21

upload-labs靶场Pass-21

时间:2024-10-31 22:52:03浏览次数:6  
标签:文件 21 upload 数组 labs gif file 上传

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!!!

标签:文件,21,upload,数组,labs,gif,file,上传
From: https://blog.csdn.net/wanggonghanfei/article/details/143326465

相关文章

  • Leetcode21:合并两个有效链表
    原题地址:.-力扣(LeetCode)题目描述将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例1:输入:l1=[1,2,4],l2=[1,3,4]输出:[1,1,2,3,4,4]示例2:输入:l1=[],l2=[]输出:[]示例3:输入:l1=[],l2=......
  • Goby 漏洞发布|Apache Solr /solr/admin/info/properties:/admin/info/key 权限绕过漏
    漏洞名称:ApacheSolr/solr/admin/info/properties:/admin/info/key权限绕过漏洞(CVE-2024-45216)EnglishName:ApacheSolr/solr/admin/info/properties:/admin/info/keyPermissionBypassVulnerability(CVE-2024-45216)CVSScore:7.3漏洞描述:ApacheSolr是一个开源搜索服......
  • AP5216 是一款 PWM工作模式, 高效率、外围简单、内置功率管,适用于5V~100V输入的高精度
    产品描述AP5216是一款PWM工作模式,高效率、外围简单、内置功率管,适用于5V~100V输入的高精度降压LED恒流驱动芯片。输出最大功率可达9W,最大电流1.0A。AP5216可实现全亮/半亮功能切换,通过MODE切换:全亮/半亮模式。AP5216工作频率固定在130KHZ,同时内置抖频电路,可以降低......
  • Leetcode每日一题 3216. 交换后字典序最小的字符串
    Leetcode每日一题##3216.交换后字典序最小的字符串###C++给你一个仅由数字组成的字符串s,在最多交换一次相邻且具有相同奇偶性的数字后,返回可以得到的字典序最小的字符串。如果两个数字都是奇数或都是偶数,则它们具有相同的奇偶性。例如,5和9、2和4奇偶性相同,而......
  • ElevenLabs Voice Design:文本生成个性化语音;科学家用 AI 解读猪叫声背后情绪和压力丨R
       开发者朋友们大家好: 这里是「RTE开发者日报」,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享RTE(Real-TimeEngagement)领域内「有话题的新闻」、「有态度的观点」、「有意思的数据」、「有思考的文章」、「有看点的会议」,但内容仅代表编......
  • 全新 PAN211X,创新技术加持。抗干扰强,兼容性好,让工程师的设计如虎添翼
    在当今科技飞速发展的时代,各种先进的电子设备不断涌现,而在众多优秀的产品中,PAN211X以其卓越的性能和独特的优势脱颖而出。一、2.4G无线射频:畅享高速连接PAN211X具备强大的2.4G无线射频功能,为用户带来了高速、稳定的无线连接体验。在这个信息时代,快速的数据传输至关重要,而......
  • Leetcode每日一题C之3211. 生成不含相邻零的二进制字符串
    1、执行结果:通过2、显示详情:3、题目:  给你一个正整数 n。如果一个二进制字符串 x 的所有长度为2的子字符串中包含 至少 一个 "1",则称 x 是一个 有效 字符串。返回所有长度为 n 的 有效 字符串,可以以任意顺序排列。示例1:输入: n=3输出: ["010","01......
  • Leetcode每日一题C之3216. 交换后字典序最小的字符串
     1、执行结果:通过2、显示详情:3、题目:  给你一个仅由数字组成的字符串 s,在最多交换一次 相邻 且具有相同 奇偶性 的数字后,返回可以得到的字典序最小的字符串。如果两个数字都是奇数或都是偶数,则它们具有相同的奇偶性。例如,5和9、2和4奇偶性相同,而6和9奇偶......
  • CTF学习(1):WEB(upload)
    1.进入网站(文件上传题?)--->CTRL+U查看源码(无果)--->导入带有一句话木马的.php文件(无法上传非图片文件)2.使用JavascriptSwitch插件关闭网页的js设置后再次上传图片(成功)--->将文件上传后的路径添加进蚁剑(密码为先前上传的.php文件中POST['']内的字符)3.连入服务器后在......
  • 周报 | 24.10.21-24.10.27文章汇总
    为了更好地整理文章和发表接下来的文章,以后每周都汇总一份周报。周报|24.10.14-24.10.20文章汇总-CSDN博客OpenCV学堂|YOLOv8实战|荧光显微镜细胞图像检测-CSDN博客江大白|通用视觉Backbone,TransXNet:全局+局部动态=性能强大(附源码及源码)-CSDN博客OpenMMLab|S4模......