upload-labs靶场通关指南(第1-3关)

2023-10-27

今天继续给大家介绍渗透测试相关知识,本文主要内容是upload-labs靶场通关指南(第1-3关)

免责声明:
本文所介绍的内容仅做学习交流使用,严禁利用文中技术进行非法行为,否则造成一切严重后果自负!
再次强调:严禁对未授权设备进行渗透测试!

一、第一关

(一)代码分析

第一关关键代码如下所示:

function checkFile() {
    var file = document.getElementsByName('upload_file')[0].value;
    if (file == null || file == "") {
        alert("请选择要上传的文件!");
        return false;
    }
    //定义允许上传的文件类型
    var allow_ext = ".jpg|.png|.gif";
    //提取上传文件的类型
    var ext_name = file.substring(file.lastIndexOf("."));
    //判断上传文件类型是否允许上传
    if (allow_ext.indexOf(ext_name + "|") == -1) {
        var errMsg = "该文件不允许上传,请上传" + allow_ext + "类型的文件,当前文件类型为:" + ext_name;
        alert(errMsg);
        return false;
    }
}

(二)绕过思路

从上述代码中可以看出,上述代码使用了JavaScript脚本,在前端对用户上传文件的类型进行了检测。因此,我们只需要先上传符合JavaScript脚本要求的数据包,然后使用Burpsuit抓取该数据包,然后将该文件的后缀名改成php,这样我们就可以成功上传恶意文件了。

(三)绕过实战

接下来,我们来进行第一关的绕过实战,首先,我们上传一个名为exp.jpg的文件(文件内容任意,可以是一句话木马等)。然后设置使用Burpsuit抓包,抓到数据包如下所示:
在这里插入图片描述
注意看上图中红线部分,我们将其修改为exp.php,这样就可以成功上传了,上传成功后的文件如下所示:
在这里插入图片描述

二、第二关

(一)代码分析

第二关关键代码如下所示:
在这里插入图片描述

(二)绕过思路

结合代码及题目提示,我们可以明确,第二关对客户端上传的文件,只是校验了其MIME信息。因此我们的思路与第一关相类似,也是先上传文件,然后抓包,之后修改数据包的MIME信息,这样就能够绕过对MIME的检验了。

(三)绕过实战

接下来我们开始进行实战。还是先上传恶意文件,并使用Burpsuit抓包,修改下图中红线部分,将原始数据包中的:

Content-Type:application/octet-stream

修改为:

Content-Type:image/jpeg

在这里插入图片描述
之后,即可放行该数据包。
这样,我们也可以成功是上传我们的恶意文件了。

三、第三关

(一)代码分析

第三关关键代码如下所示:
在这里插入图片描述

(二)绕过思路

通过上述代码,结合题目提示,可以判断处,本关使用了黑名单的方式,对客户端上传的文件后缀名进行了检验,不允许上传asp、php、aspx、jsp等后缀名的文件。我们可以看出,这份黑名单非常不全面,我们可以使用phps、phtml、php5等后缀名绕过该过滤手段。

(三)绕过实战

接下来,我们进行绕过实战。我们创造一个后缀名为/php5的文件,并写入我们的恶意代码,之后进行上传,发现上传成功并出现如下页面:
在这里插入图片描述
接下来,我们可以使用浏览器自带的开发工具查看上图中图片的路径,如上图中红线部分所示。
之后,我们可以访问该路径,结果如下所示:
在这里插入图片描述
从上图可以看出,我们的恶意文件成功上传,并且能够成功解析。

四、关于phpstudy无法实现第三关,不解析php5、phtml等问题

我们在进行上述实验时,有时会发现第三关无法使用phpstudy软件来复现。这时我们需要检查Apache的配置文件,并且在配置文件中添加如下内容:

AddType application/x-httpd/php .php .phtml .php5

上述配置表示将后缀名为.php、.phtml、和.php5的文件都当作php文件解析,配置完成后如下所示:
在这里插入图片描述
此外,最新版本的phpstudy,即使进行了上述的配置,也不支持对.php5等文件的解析。因此,如果我们要做upload-labs的实验,最好使用2018版本的phpstudy。
新版本的phpstudy如下所示:
在这里插入图片描述
老版本的phpstudy如下所示:
在这里插入图片描述
原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

upload-labs靶场通关指南(第1-3关) 的相关文章

随机推荐

  • Python3数据类型

    Python3数据类型 数据类型 描述 可变 Y N Number 数字 N String 字符串 N List 列表 Y Tuple 元组 N Set 集合 Y Dictionary 字典 Y python中数字有四种类型 整数 布尔型
  • Windows下的Rime輸入法與小鶴雙拼的配置

    今天結束了這一週的考試 於是有一個晚上的空閒時間來寫博客了 考慮到已經沒有使用簡體字的太大必要了 所以我也準備在博客的書寫中使用繁體漢字 這就涉及到了很多輸入法 比如我正在使用的QQ輸入法 無法正確處理一簡對多繁 的一個大問題 大多數的輸入
  • java 使用hutool工具进行MD5加密

    引入依赖
  • 咏儿 gz.lrd

    人 生 惬 意 几 个 秋 闲 云 野 鹤 解 春 愁 醉 看 过 往 十 年 数 还 笑 今 朝 小 儿 休
  • 高仿美团主界面<一>

    声明 本demo还未完善 正在持续更新中 先上图吧 这个小demo资源图片全是用青花瓷抠出来的 现在只是完成了 一部分 会持续更行中 有兴趣的朋友可以关注我 我们一起coding 一起分享 然后这个demo很简单 但是有一些小细节可以和大家
  • MySQL性能优化配置/etc/my.cnf参数

    MySQL etc my cnf文件配置 client port 3306 socket var lib mysql mysql sock default character set utf8 mysql no auto rehash 仅允
  • Java多线程使用案例【附可运行代码】

    标题Java多线程使用案例 1 创建线程池 创建任务 将任务提交到线程池中执行 public class Test1 private static Map
  • Parcelable 和 Serializable的区别和使用

    序列化 为了保存在内存中的各种对象的状态 并可以把保存的对象的状态读出来 一 Seralizable介绍 1 Serializable 是java的序列化技术 最简单的使用方式为在需要序列化的class增加implements Serial
  • 快速部署Qsign签名服务器为go-cqhttp或icqq进行签名认证

    rhwong unidbg fetch qsign onekey 用于一键在Windows下部署fuqiuluo unidbg fetch qsign github com 本项目使用1 1 6版本 由于当前go cqhttp 1 1 0
  • cmake:指定install的安装目录

    使用 CMAKE INSTALL PREFIX 来指定 方法1 在执行cmake时指定 cmake DCMAKE INSTALL PREFIX lt 你想要安装的路径 gt 方法二 设置CMAKE INSTALL PREFIX 变量 SET
  • IDEA中plugins中搜索不到插件问题解决

    2018 3 5 IDEA中plugins中搜索不到插件问题解决 由于项目中需要一些简化开发的一些插件 但是在idea中搜索不到任何的插件 很是痛苦 下面提供两种解决办法 一 第一种解决办法 首先进入File gt setting界面 gt
  • 什么是ELK

    什么是ELK ELK 并不是一个技术框架的名称 它其实是一个三位一体的技术名词 ELK 的每个字母都来自一个技术组件 分别是 Elasticsearch 简称 ES Logstash 和 Kibana 三个技术组件是独立的 后两个被elas
  • pcl中ransac提取直线_pcl学习笔记1

    文 云师弟 源 云师弟 编 云师弟 文仅交流 如侵联删 点击上方 云师弟的学习空间 关注 星标 获取有趣 好玩的前沿干货 PCL The Point Cloud Library 是用于2D 3D图像和点云处理的大规模开放项目 开源软件 它是
  • 小程序数据证明采集_小程序数据埋点实践之曝光量

    什么是数据埋点 所谓数据埋点就是应用在规定流程中 对特定行为或事件进行数据采集 使用采集的数据做用户分析和页面分析 可以获得应用的总体使用情况 为后续优化产品和运营提供数据支撑 常见数据埋点内容包括 访问量 停留时长 曝光量 点击量 跳出率
  • docker 命令查看当前所有服务的物理性能命令

    docker stats no stream docker ps awk NR gt 1 print NF grep wmy CONTAINER sort n r k 8 docker stats 查看每个容器状态 no stream 当前
  • 简单几步,用Visual Studio写出并运行一个c程序

    1 首先请确保安装了相应的IDE 作者使用的VS版本为最新 已目前文章发布时间为准 的2022版本 而版本只要不是太远古本方法通用 2 创建一个新项目 打开VS 点击创建新项目 找到c 的空项目 点击使其创建 更换项目名称 点击右下角创建
  • 【Yarn】Yarn StateMechine有限状态机

    文章目录 1 概述 2 StateMachine 2 1 InternalStateMachine 2 1 1 maybeMakeStateMachineTable 2 2 StateMachineFactory 2 2 1 获取实例 2
  • Available Packages显示nothing to show

    项目场景 pycharm添加包 use conda package manager 问题描述 在使用pycharm添加包时availiable packages 显示nothing to show 且右上角一直刷新 原因分析 安装的时候an
  • python中int的功能_Python内置函数int()高级用法

    int 函数常用来把其他类型转换为整数 例如 gt gt gt int 3 2 3 gt gt gt int 1 3 0 其实 int是Python内置类型之一 之所以能够当作函数来用 是因为它提供了构造方法 另外 它还提供了第二个参数支持
  • upload-labs靶场通关指南(第1-3关)

    今天继续给大家介绍渗透测试相关知识 本文主要内容是upload labs靶场通关指南 第1 3关 免责声明 本文所介绍的内容仅做学习交流使用 严禁利用文中技术进行非法行为 否则造成一切严重后果自负 再次强调 严禁对未授权设备进行渗透测试 一