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种不同的错误场景,并给出具体的解决步骤和示例,帮助初学者快速定位…...

国防科技大学计算机基础课程笔记02信息编码
1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制,因此这个了16进制的数据既可以翻译成为这个机器码,也可以翻译成为这个国标码,所以这个时候很容易会出现这个歧义的情况; 因此,我们的这个国…...
Vue记事本应用实现教程
文章目录 1. 项目介绍2. 开发环境准备3. 设计应用界面4. 创建Vue实例和数据模型5. 实现记事本功能5.1 添加新记事项5.2 删除记事项5.3 清空所有记事 6. 添加样式7. 功能扩展:显示创建时间8. 功能扩展:记事项搜索9. 完整代码10. Vue知识点解析10.1 数据绑…...

7.4.分块查找
一.分块查找的算法思想: 1.实例: 以上述图片的顺序表为例, 该顺序表的数据元素从整体来看是乱序的,但如果把这些数据元素分成一块一块的小区间, 第一个区间[0,1]索引上的数据元素都是小于等于10的, 第二…...
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...
oracle与MySQL数据库之间数据同步的技术要点
Oracle与MySQL数据库之间的数据同步是一个涉及多个技术要点的复杂任务。由于Oracle和MySQL的架构差异,它们的数据同步要求既要保持数据的准确性和一致性,又要处理好性能问题。以下是一些主要的技术要点: 数据结构差异 数据类型差异ÿ…...
【HTML-16】深入理解HTML中的块元素与行内元素
HTML元素根据其显示特性可以分为两大类:块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...
Axios请求超时重发机制
Axios 超时重新请求实现方案 在 Axios 中实现超时重新请求可以通过以下几种方式: 1. 使用拦截器实现自动重试 import axios from axios;// 创建axios实例 const instance axios.create();// 设置超时时间 instance.defaults.timeout 5000;// 最大重试次数 cons…...
Redis的发布订阅模式与专业的 MQ(如 Kafka, RabbitMQ)相比,优缺点是什么?适用于哪些场景?
Redis 的发布订阅(Pub/Sub)模式与专业的 MQ(Message Queue)如 Kafka、RabbitMQ 进行比较,核心的权衡点在于:简单与速度 vs. 可靠与功能。 下面我们详细展开对比。 Redis Pub/Sub 的核心特点 它是一个发后…...

AI+无人机如何守护濒危物种?YOLOv8实现95%精准识别
【导读】 野生动物监测在理解和保护生态系统中发挥着至关重要的作用。然而,传统的野生动物观察方法往往耗时耗力、成本高昂且范围有限。无人机的出现为野生动物监测提供了有前景的替代方案,能够实现大范围覆盖并远程采集数据。尽管具备这些优势…...
scikit-learn机器学习
# 同时添加如下代码, 这样每次环境(kernel)启动的时候只要运行下方代码即可: # Also add the following code, # so that every time the environment (kernel) starts, # just run the following code: import sys sys.path.append(/home/aistudio/external-libraries)机…...