upload-labs游戏
upload-labs游戏
黑名单绕过方式
第1关:JavaScript前端验证
绕过方式:
1、BurpSuit抓包修改文件名后缀
2、在浏览器禁用JavaScript
第2关:MIME类型的验证
绕过方式:
BurpSuit抓包修改文件类型(Content-Type字段)
第3关:特殊后缀的黑名单验证
绕过方式:
1、等价扩展名绕过
这个等价扩展名绕过试了很多次一直没有成功,通过查资料知道了php版本有nts型和ts型,而nts型不能解析等价扩展名。我一直是用的phpstudy,里面php版本只有nts型。
这里是大佬的参考资料
https://www.cnblogs.com/Article-kelp/p/14927087.html
一开始我下载的PHP版本是php-8.2.4-ts,尝试了一下,apache运行报错,又折回下载了php-7.4.33-ts版本,成功。
2、看到网上有人说这里可以用.htaccess文件绕过+jpg文件绕过,但是我试了很久,一直不能绕过,原因是因为这里上传.htaccess文件时,文件前面会有一段时间戳,把.htaccess文件变成了202303212110057239.htaccess,导致无法正常解析。
第4关:.htaccess绕过
绕过方式:
php文件改成.jpg文件+.htaccess文件绕过
第5关:空格+点绕过
绕过方式:
利用BurpSuit抓包修改文件后缀名为“.php. .”,因为这里先过滤最后的点,然后过滤了空格,最后拿.php.与黑名单配对,.php.不在黑名单中。成功绕过。
第6关:大小写绕过(复现失败)
绕过方式:
没有全部转化成小写,这里可以用.PhP、.PHP、.Php等后缀绕过。(这里不知道什么原因,把.PHP文件上传以后一直访问不到,用浏览器访问报出500的错误,这里路径,文件名都是对的。然后我做了个小测试,把.PHP文件改成.php文件后就可以访问到了。目前还不知道啥原因。)
第7关:末尾加空格绕过
绕过方式:
末尾加空格
第8关:末尾加点绕过
绕过方式:
末尾加点
第9关:::$DATA绕过
绕过方式:
利用Windows特性::$DATA绕过
第10关:空格+点绕过
绕过方式:
利用BurpSuit抓包修改文件后缀名为“.php. .”,因为这里先过滤最后的点,然后过滤了空格,最后拿.php.与黑名单配对,.php.不在黑名单中。成功绕过。
第11关:双写绕过
绕过方式:
源码显示把php等后缀名都变为空了,所以这里双写以.pphphp后缀名上传。
白名单绕过方式
第12关:GET型%00截断绕过
绕过方式:
%00只能用于php版本低于5.3的。刚开始一直用的php5.3.29,一直不能绕过,查了后才知道php版本要低于5.3。
php各个版本网址:
https://windows.php.net/downloads/releases/archives/
下载后需要没有php.ini文件,把php.ini-dist文件改成php.ini文件就好了,然后修改一下magic_quotes_gpc为OFF就行了。
第13关:POST型%00截断绕过
绕过方式:
和GET型类似,就是%00需要用url解码
上传图片马+文件包含漏洞
第14关:图片+文件包含漏洞
制作图片马:
copy 1.jpg /b + 2.php /a 3.jpg
这里需要注意的就是1.jpg/b需要放前面,这样可以把2.php中的内容放在最后。这里对图片可能也有点要求,我第一次使用的图片有点大,不知道怎么回事报错了,后来用了一张小一点的图片,成功解析。
上传成功后用文件包含漏洞以php语言解析出来
大概格式:upload-labs/include.php?file=upload/1120230322182510.jpg
第15关:getimagesize()
getimagesize — 取得图像大小
可以用图片马+文件包含漏洞。
第16关:exif_imagetype()
exif_imagetype — 判断一个图像的类型
可以用图片马+文件包含漏洞。
第17关:二次渲染(复现失败)
imagecreatefromjpeg — 由文件或 URL 创建一个新图象。
逻辑漏洞
第18关:条件竞争
只要访问到php_playload.php,就会生成一个一句话木马。
<?php
fputs(fopen('yyy.php','w'),
'<?php @eval($_POST[yyy])?>')
?>
python脚本去访问,也可以自己去访问
import requests
url = "xxx.xxx"
while True:
html = requests.get(url)
if html.status_code == 200:
print("OK")
break
第19关:条件竞争+Apache的解析漏洞(复现失败)
Apache解析漏洞:当文件名为1.php.xxx时,会把文件当做1.php执行
第20关:move_uploaded_file()
move_uploaded_file() 函数将上传的文件移动到新位置。
绕过方式:
1、可以用%00截断,但是php版本需要低于5.3,而且需要magic_quotes_gpc=OFF
2、move_uploaded_file()有这么一个特性,会忽略掉文件末尾的 /.
第21关:利用数组绕过验证
upload-labs游戏的更多相关文章
- SUCTF 2019 Upload labs 2 踩坑记录
SUCTF 2019 Upload labs 2 踩坑记录 题目地址 : https://github.com/team-su/SUCTF-2019/tree/master/Web/Upload La ...
- Upload - Labs (下)
Pass - 11: 1.查看源代码,发现进行了一次对后缀名替换成空格,因此考虑双写绕过, 2.上传成功, 关键代码: $is_upload = false; $msg = null; if (iss ...
- Upload - Labs (上)
Pass - 01: 1.尝试上传一个php文件:aaa.php,发现只允许上传某些图片类型,用bp抓包,发现http请求都没通过burp就弹出了不允许上传的提示框,这表明验证点在前端,而不在服务端 ...
- [web安全原理分析]-文件上传漏洞基础
简介 前端JS过滤绕过 待更新... 文件名过滤绕过 待更新 Content-type过滤绕过 Content-Type用于定义网络文件的类型和网页编码,用来告诉文件接收方以什么形式.什么编码读取这个 ...
- [原题复现+审计][SUCTF 2019] WEB CheckIn(上传绕过、.user.ini)
简介 原题复现:https://github.com/team-su/SUCTF-2019/tree/master/Web/checkIn 考察知识点:上传绕过..user.ini 线上平台:h ...
- buu学习记录(上)
前言:菜鸡误入buu,差点被打吐.不过学到了好多东西. 题目名称: (1)随便注 (2)高明的黑客 (3)CheckIn (4)Hack World (5)SSRF Me (6)piapiapia ( ...
- Upload-labs通关指南(上) 1-10
Upload-labs 所有文章和随笔(随笔将不于csdn更新)将于我的个人博客(移动端暂未适配)第一时间更新. 一些网站存在文件上传接口,一旦存在这个接口就有可能存在漏洞. 文件上传漏洞的逻辑是将一 ...
- upload上传通关游戏
第一关:后缀名限制,抓包改一下后缀. 前端脚本检测文件扩展名.当客户端选择文件点击上传的时候,客户端还没有向服务器发送任何消 息,前端的 js 脚本就对文件的扩展名进行检测来判断是否是可以上传的类型 ...
- Bzoj1455 罗马游戏
Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 1622 Solved: 679 Description 罗马皇帝很喜欢玩杀人游戏. 他的军队里面有n个人 ...
- 第1部分: 游戏引擎介绍, 渲染和构造3D世界
原文作者:Jake Simpson译者: 向海Email:GameWorldChina@myway.com ---------------------------------------------- ...
随机推荐
- python更改图片后缀名为jpg格式
1 import os 2 import cv2 3 class GeneDataset(): 4 def __init__(self,rootdir): 5 self.rootdir = rootd ...
- python基础篇 15-常用模块:random string sorted lambda函数
一.random import os,random,sys,time,string print(random.randint(1,10)) # 产生随机的整数 print(random.uniform ...
- kubernetes系列—Ubuntu下搭建Kubernetes集群--k8s部署
1.kubernetes安装介绍 1.1 K8S架构图 1.2 K8S搭建安装示意图 2.安装kubernetes 2.1 关闭防火墙 在每台机器上关闭防火墙: ① 关闭服务,并设为开机不自启 $ ...
- python之基本数据类型--数字类型
变量是为了让计算机像人一样的去记录事务的某种状态,那变量值就是用来存储事务的状态,在现实生活中事物状态明显的分为不同的种类,比如人类的年龄.身高.体重.工资.等等,所以变量也是有不同类型的,变量的几种 ...
- SQL五十题记录 1-2
前言: 创建以下四张表:①:课程表 ②:成绩表 ③:学生表 ④:教师表 1.查询课程编号为""01""的课程比"02"的课程成绩高的所有学生 ...
- 什么是Vuex
Vuex是实现组件全局状态(数据)管理的一种机制,可以方便的实现组件之间数据的共享. 优点: 能够在Vuex中集中管理共享的数居,易于开发和后期维护 能够高效地实现组件之间的数据共享,提高开发效率 存 ...
- Nginx 代理解决跨域问题分析
Nginx 代理解决跨域问题分析 当你遇到跨域问题,不要立刻就选择复制去尝试.请详细看完这篇文章再处理 .我相信它能帮到你. 分析前准备: 前端网站地址:http://localhost:8080 ...
- Spring Boot中使用过滤器和拦截器
过滤器(Filter)和拦截器(Interceptor)是Web项目中常用的两个功能,本文将简单介绍在Spring Boot中使用过滤器和拦截器来计算Controller中方法的执行时长,并且简单对比 ...
- 【内存管理】ION内存管理器浅析(system contig heap)
system contig heap与system heap 从代码中我们看到system contig heap与system heap同属一个文件中,ion_system_heap.c 相同点:它 ...
- centos 开启关闭网卡(禁用网卡)
说明我之前在工作中使用的服务器很多都是多网卡服务器,他可以使用不同的网卡连接不同的网段,但是,由于个别情况突发,有时候可能需要关闭某些网卡,禁止它们访问到网络,也就是需要关闭网卡.步骤1.查看有哪些网 ...