upload-labs 通关方法
目录
Less-1(JS前端验证)
Less-2(MIME验证)
Less-3(黑名单,特殊过滤)
Less-4(黑名单验证,.htaccess)
Less-5(黑名单,点空格点绕过)
Less-6(黑名单,大小写绕过)
Less-7(黑名单,空格绕过)
Less-8(黑名单,点绕过)
Less-9(黑名单,::$DATA)
Less-10(黑名单,点空格点绕过)
Less-11(黑名单,双写绕过)
Less-12-13(白名单,%00截断)
Less-14(图片马绕过unpack)
Less-15(图片马getimagesize)
Less-16(图片马exif_imagetype)
Less-17(二次渲染)
Less-18(条件竞争)
Less-19(条件竞争)
Less-20(图片马,move_uploaded_file)
第一种解法:
第二种解法:
第三种解法:
Less-21
Less-1(JS前端验证)
在前端页面按F12禁用JS

或者删除checkFile()

或者使用burp将 1.jpg 改为 1.php

Less-2(MIME验证)

在这两处修改,1.jpg 改为 1.php
再将内容类型Content-Type改为 image/jpeg、image/png、image/jpg
Less-3(黑名单,特殊过滤)

将 1.php 后缀改为 php2、php3、php5、php7、phtml等绕过(需要php5.3版本)
Less-4(黑名单验证,.htaccess)
相关知识:
.htaccess文件是Apache服务中的一个配置文件,它负责相关目录下的网页配置。

SetHandler application/x-httpd-php 意思是当前目录下,所有文件都以php进行解析
将.htaccess上传之后再随便上传一个带木马的文件即可
或者使用Apache解析漏洞,使用后缀名为.php.aaa.bbb上传
解析时从后往前 .bbb .aaa 不认识 到 .php 开始解析

Less-5(黑名单,点空格点绕过)

使用burp将后缀名后面加上点空格点绕过
Less-6(黑名单,大小写绕过)

源代码过滤了pHp,没有过滤Php、phP等,大小写绕过
Less-7(黑名单,空格绕过)
windows系统搭建的有该漏洞,windows解析时自动去除末尾的空格

在文件后缀名后加上空格即可绕过
Less-8(黑名单,点绕过)

源代码没有过滤点,在末尾加上.即可绕过
Less-9(黑名单,::$DATA)
相关知识:
在window中如果文件名+"::$DATA"会把::$DATA之后的数据当成文件流处理,不会检测后缀名

末尾加上::$DATA绕过即可
Less-10(黑名单,点空格点绕过)
补充知识:
deldot()函数从后向前检测,当检测到末尾的第一个点时会继续它的检测,但是遇到空格会停下来

后缀加上点空格点绕过即可
Less-11(黑名单,双写绕过)
补充知识:
str_ireplace(find,replace,string,count) 函数替换字符串中的一些字符(不区分大小写)

后缀名使用双写绕过
Less-12-13(白名单,%00截断)
%00截断的限制条件是PHP<5.3.29,且GPC关闭
因为当 magic_quotes_gpc 打开时,所有的 ' (单引号), " (双引号), \ (反斜线) and 空字符会自动转为含有反斜线的转义字符。
在POST请求头HTTP之前加上1.php%00进行截断,下面文件为白名单格式(1.png、1.jpg)
Less-14(图片马绕过unpack)
补充知识:
unpack是二进制解包,前两个字节解包分为两个包,然后合并结合switch判断

使用生成的图片马上传即可
Less-15(图片马getimagesize)
补充知识:
getimagesize用于获取图像大小及相关信息,成功返回一个数组,失败则返回 FALSE

与14关相同,上传图片马即可绕过
Less-16(图片马exif_imagetype)
补充知识:

开启模块之后,做法与14关相同
Less-17(二次渲染)
补充知识:
imagejpeg — 输出图象到浏览器或文件。
使用php版本(PHP 4, PHP 5, PHP 7, PHP 8)
上传一张图片马,创建一张画布,重新绘画进行二次渲染
上传成功之后下载下来使用winhex二进制查看
与原来的图片进行对比,在没有改动的地方插入木马
将插入木马的图片再次上传即可
Less-18(条件竞争)
使用木马脚本

上传脚本,在没有被删除之前执行脚本

python代码

使用burp配合python,上传到burp拦截,然后使用burp进行爆破
python先开启,一直访问这个url,当执行代码没来得及删除的时候python访问到,执行代码

执行之后会写入一个shelltest.php文件,如下所示

执行shelltest.php文件即可

Less-19(条件竞争)
文件名改为白名单,条件竞争在改名之前访问到url生成木马,与18关相同
python代码有所更改

也可以使用非预期解,直接上传图片马,文件包含
Less-20(图片马,move_uploaded_file)
第一种解法:
补充知识:
本关用move_uploaded_file函数执行上传动作,该函数会忽略文件末尾的 ' /. '
因此可以在文件名后加/.这两个符号来绕过黑名单的限制。

使用burp抓包,在高亮处加上/.即可绕过
第二种解法:
上传图片马,文件包含
第三种解法:
直接上传文件,大小写绕过
Less-21
本关请参考另一篇博客
upload-labs 21关解析-CSDN博客

相关文章:
upload-labs 通关方法
目录 Less-1(JS前端验证) Less-2(MIME验证) Less-3(黑名单,特殊过滤) Less-4(黑名单验证,.htaccess) Less-5(黑名单,点空格点绕过…...
5-26 Cpp学习笔记
1、如果子类实现了基类的函数,返回值、参数都相同,就覆盖了基类的函数。 2、使用作用域解析运算符来调用基类的函数。myDinner.Swim(); —— 调用子类的。myDinner.Fish::Swim(); —— 调用基类的(基类是Fish) 3、在子类中使用关键字using解除对Fish::…...
YOLOv8_pose的训练、验证、预测及导出[关键点检测实践篇]
1.关键点数据集划分和配置 从上面得到的数据还不能够直接训练,需要按照一定的比例划分训练集和验证集,并按照下面的结构来存放数据,划分代码如下所示,该部分内容和YOLOv8的训练、验证、预测及导出[目标检测实践篇]_yolov8训练测试验证-CSDN博客是重复的,代码如下: …...
架构师必考题--软件系统质量属性
软件系统质量属性 1.质量属性2.质量属性场景描述3.系统架构评估 这个知识点是系统架构师必考的题目,也是案例分析题第一题, 有时候会出现在选择题里面,考的分数也是非常高的。 1.质量属性 属性说明可用性错误检测/恢复/避免性能资源需求/管理…...
使用AWR对电路进行交流仿真---以整流器仿真为例
使用AWR对电路进行交流仿真—以整流器仿真为例 生活不易,喵喵叹气。马上就要上班了,公司的ADS的版权紧缺,主要用的软件都是NI 的AWR,只能趁着现在没事做先学习一下子了,希望不要裁我。 本AWR专栏只是学习的小小记录而…...
在UbuntuLinux系统上安装MySQL和使用
前言 最近开始计划在Ubuntu上写一个webserver的项目,看到一些比较好的类似的项目使用了MySQL,我就打算先把环境搞好跑一下试试,方便后面更进一步的学习。其实在本机windows上我已经有一个mysql,不过 在Unbuntu上安装MySQL 首先…...
React 如何自定义 Hooks
自定义 Hooks React 内部自带了很多 Hooks 例如 useState、useEffect 等等,那么我们为什么还要自定义 Hooks?使用 Hooks 的好处之一就是重用,可以将代码从组件中抽离出来定义为 Hooks,而不用每个组件中重复去写相同的代码。首先是…...
智能家居完结 -- 整体设计
系统框图 前情提要: 智能家居1 -- 实现语音模块-CSDN博客 智能家居2 -- 实现网络控制模块-CSDN博客 智能家居3 - 实现烟雾报警模块-CSDN博客 智能家居4 -- 添加接收消息的初步处理-CSDN博客 智能家居5 - 实现处理线程-CSDN博客 智能家居6 -- 配置 ini文件优化设备添加-CS…...
双指针用法练习题(2024/5/26)
1三数之和 给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k ,同时还满足 nums[i] nums[j] nums[k] 0 。请 你返回所有和为 0 且不重复的三元组。 注意:答案中不可以包含重复的三元…...
Ansible02-Ansible Modules模块详解
目录 写在前面4. Ansible Modules 模块4.1 Ansible常用模块4.1.1 Command模块4.1.2 shell模块4.1.3 scrpit模块4.1.4 file模块4.1.5 copy模块4.1.6 lineinfile模块4.1.7 systemd模块4.1.8 yum模块4.1.9 get_url模块4.1.10 yum_repository模块4.1.11 user模块4.1.12 group模块4.…...
【Python特征工程系列】一文教你使用PCA进行特征分析与降维(案例+源码)
这是我的第287篇原创文章。 一、引言 主成分分析(Principal Component Analysis, PCA)是一种常用的降维技术,它通过线性变换将原始特征转换为一组线性不相关的新特征,称为主成分,以便更好地表达数据的方差。 在特征重要…...
【Linux】Ubuntu系统挂载NAS文件夹
测试系统:Ubuntu24.02 1. 安装必要的软件包 sudo apt update sudo apt install cifs-utils 2. 创建挂载点 sudo mkdir -p /mnt/nas 3. 获取当前用户的 UID 和 GID id -u id -g 4. 挂载:设置用户名/密码/nas地址 sudo mount -t cifs -o username,…...
如何用ai打一场酣畅淋漓的数学建模比赛? 给考研加加分!
文章目录 数学建模比赛1. 数学建模是什么?2. 数学建模分工合作2.1 第一:组队和分工合作2.2 第二:充分的准备2.3 第三:比赛中写论文过程 3. 数学建模基本过程4. 2023全年数学建模竞赛时间轴5. 数学建模-资料大全6. 数学建模实战 数…...
深入浅出MySQL事务实现底层原理
重要概念 事务的ACID 原子性(Atomicity):即不可分割性,事务中的操作要么全不做,要么全做一致性(Consistency):一个事务在执行前后,数据库都必须处于正确的状态…...
SVM兵王问题
1.流程 前面六个就是棋子的位置,draw就是逼和,后面的数字six就代表,白棋最少用六步就能将死对方。然后呢,可以看一下最后一个有几种情况: 2.交叉测试 leave one out: 留一个样本作测试集,其余…...
yolov5_obb
yolov5_obb: 旋转目标检测从数据制作到终端部署全流程教学...
NextJs 初级篇 - 安装 | 路由 | 中间件
NextJs 初级篇 - 安装 | 路由 | 中间件 一. NextJs 的安装二. 路由2.1 路由和页面的定义2.2 布局的定义和使用2.3 模板的定义和使用① 模板 VS 布局② 什么是 use client 2.4 路由跳转的方式2.5 动态路由2.6 路由处理程序① GET 请求的默认缓存机制② 控制缓存或者退出缓存的手…...
变分自动编码器(VAE)深入理解与总结
本文导航 0 引言1 起源1.1 自编码器的任务定义1.2 自编码器存在的问题1.3 VAE的核心思路 2 VAE的建模过程2.1 VAE的任务定义2.2 真实分布 ϕ \phi ϕ是什么,为什么要逼近这个分布的参数,如何做?2.3 “重参数化(Reparameterization…...
Leetcode 剑指 Offer II 079.子集
题目难度: 中等 原题链接 今天继续更新 Leetcode 的剑指 Offer(专项突击版)系列, 大家在公众号 算法精选 里回复 剑指offer2 就能看到该系列当前连载的所有文章了, 记得关注哦~ 题目描述 给定一个整数数组 nums ,数组中的元素 互不相同 。返…...
Linux基础命令常见问题解决方案
Linux 基础命令常见问题解决方案 在Linux的日常使用中,用户经常会遇到各种各样的问题。本文旨在提供一个关于Linux基础命令的常见问题及其解决方案的全面指南。我们将覆盖30种不同的错误场景,并给出具体的解决步骤和示例,帮助初学者快速定位…...
Leetcode 3576. Transform Array to All Equal Elements
Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接:3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到…...
全球首个30米分辨率湿地数据集(2000—2022)
数据简介 今天我们分享的数据是全球30米分辨率湿地数据集,包含8种湿地亚类,该数据以0.5X0.5的瓦片存储,我们整理了所有属于中国的瓦片名称与其对应省份,方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...
渲染学进阶内容——模型
最近在写模组的时候发现渲染器里面离不开模型的定义,在渲染的第二篇文章中简单的讲解了一下关于模型部分的内容,其实不管是方块还是方块实体,都离不开模型的内容 🧱 一、CubeListBuilder 功能解析 CubeListBuilder 是 Minecraft Java 版模型系统的核心构建器,用于动态创…...
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 &…...
项目部署到Linux上时遇到的错误(Redis,MySQL,无法正确连接,地址占用问题)
Redis无法正确连接 在运行jar包时出现了这样的错误 查询得知问题核心在于Redis连接失败,具体原因是客户端发送了密码认证请求,但Redis服务器未设置密码 1.为Redis设置密码(匹配客户端配置) 步骤: 1).修…...
Linux --进程控制
本文从以下五个方面来初步认识进程控制: 目录 进程创建 进程终止 进程等待 进程替换 模拟实现一个微型shell 进程创建 在Linux系统中我们可以在一个进程使用系统调用fork()来创建子进程,创建出来的进程就是子进程,原来的进程为父进程。…...
docker 部署发现spring.profiles.active 问题
报错: org.springframework.boot.context.config.InvalidConfigDataPropertyException: Property spring.profiles.active imported from location class path resource [application-test.yml] is invalid in a profile specific resource [origin: class path re…...
USB Over IP专用硬件的5个特点
USB over IP技术通过将USB协议数据封装在标准TCP/IP网络数据包中,从根本上改变了USB连接。这允许客户端通过局域网或广域网远程访问和控制物理连接到服务器的USB设备(如专用硬件设备),从而消除了直接物理连接的需要。USB over IP的…...
return this;返回的是谁
一个审批系统的示例来演示责任链模式的实现。假设公司需要处理不同金额的采购申请,不同级别的经理有不同的审批权限: // 抽象处理者:审批者 abstract class Approver {protected Approver successor; // 下一个处理者// 设置下一个处理者pub…...
Linux系统部署KES
1、安装准备 1.版本说明V008R006C009B0014 V008:是version产品的大版本。 R006:是release产品特性版本。 C009:是通用版 B0014:是build开发过程中的构建版本2.硬件要求 #安全版和企业版 内存:1GB 以上 硬盘…...

