文件上传之靶场upload-labs (11-20)
第十一关
strrpos() 函数查找字符串在另一字符串中最后一次出现的位置
substr() 函数返回字符串的一部分
文件保存的方式是上传路径+随机时间+截取的文件后缀
其中上传路径可控,可以利用这一点
绕过方法
利用00截断进行绕过,即move_uploaded_file函数的底层实现类似于C语言,遇到0x00会截断
截断条件:
1、php版本小于5.3.4
2、php.ini的magic_quotes_gpc为OFF状态
move_uploaded_file函数遇到0x00(16进制)就会认为已经结束
第十二关
和上一个关一样不过路径上传方式由GET变成POST
绕过方法
00截断 post方式中需要修改成二进制的00而不是直接在请求数据中修改00
#在二进制中为23,为了好找,下一步在hex将23改成00
修改成00后会在数据包显示像口这样的字符
第十三关
读取上传文件中的两个字节
将读取的内容解包(unpack() 函数从二进制字符串对数据进行解包返回数组一个字节为一个值)
返回解包后的整数值(intval() 函数通过使用指定的进制 base 转换(默认是十进制),返回变量 var 的 integer 数值)
绕过方法
我们在一句话木马的开头添加两个11也就是二进制的3131,将HEX
编码 3131 改为 FFD8 点Go
后成功上传JPG
上传了马后缀为jpg想要利用需要配合另一种漏洞文件包含,靶场专门有一个文件让我们测试文件内容为
绕过方法二
利用图片马,将一张正常的图片jpg,和一句话php合成一张新的jpg文件(window下 cmd , copy 1.jpg /b + 1.php /a 3.php)
合成后使用编辑工具打开图片内容包含一句话
第十四关
getimagesize() 函数用于获取图像大小及相关信息,成功返回一个数组
索引 2 给出的是图像的类型,返回的是数字,其中1 = GIF,2 = JPG,3 = PNG,4 = SWF,5 = PSD,6 = BMP,7 = TIFF(intel byte order),8 = TIFF(motorola byte order),9 = JPC,10 = JP2,11 = JPX,12 = JB2,13 = SWC,14 = IFF,15 = WBMP,16 = XBM
stripos — 查找字符串首次出现的位置
绕过方法
与上一关一样使用图片马
第十五关
exif_imagetype() — 判断一个图像的类型
返回值:
图像类型常量 值 常量
1 IMAGETYPE_GIF
2 IMAGETYPE_JPEG
3 IMAGETYPE_PNG
4 IMAGETYPE_SWF
5 IMAGETYPE_PSD
6 IMAGETYPE_BMP
7 IMAGETYPE_TIFF_II(Intel 字节顺序)
8 IMAGETYPE_TIFF_MM(Motorola 字节顺序)
9 IMAGETYPE_JPC
10 IMAGETYPE_JP2
11 IMAGETYPE_JPX
12 IMAGETYPE_JB2
13 IMAGETYPE_SWC
14 IMAGETYPE_IFF
15 IMAGETYPE_WBMP
16 IMAGETYPE_XBM
绕过方法
本关一样使用图片马
第十六关
图片经过渲染肯定与原来的照片不一样了
绕过方法
最简单的GIF图片
合成图片马上传,在把上传后的图片保存下来会发现一句话不见了,把图片马和下载下来的图片进行对比找到没有渲染的部分直接将一句话写进去
1.gif是我一开始上传图片马对比上传后的图片找出来一段没有经过修改的,我把其中一段空白修改成一句话代码,注意图片会失真
左边.gif是我上传修改后的1.gif保存的可以看到一句话完整的保存了下来
jpg和png都制作失败了,以后有时间再去研究,好像说图片内容格式不一样,不可以直接这样修改,都是用到国外牛人的脚本添加
第十七关
通过move_uploaded_file保存文件在判断是否后缀是否是图片,如果是则重命名保存,如果不是删除
这里存在着一个漏洞,叫条件竞争
当我发送大量的包时,文件就会先进行保存,而判断可能会存在一定的延迟
此时上传一个php文件里面代码在创建一个包含一句话的php这样就算把上传的文件删除也会存在一个木马文件
绕过方法
上传一个php文件里面代码进行创建一个新的文件
用burp捉包,选择爆破那个模块原包发送5000次,线程50
访问上传的文件
同样再发5000个请求包去访问未删除前的地址,一但成功则会生成一个shell文件
当请求页面返回200停止,此时由于我们代码理有生成shell文件,所以直接访问
第十八关
对文件后缀名做了白名单判断,然后会一步一步检查文件大小、文件是否存在等等,将文件上传后,对文件重新命名,同样存在条件竞争的漏洞。可以不断利用burp发送上传图片马的数据包,由于条件竞争,程序会出现来不及rename的问题,从而上传成功
绕过方法
使用上一关的木马文件,白名单中允许后缀为7z的文件上传
我们可以构造1.php.7z文件,在Apache中允许多后缀,并且从右向左解析
当我们访问1.php.7z解析成php文件,根据文件代码生成shell.php
第十九关
文件名可控,
pathinfo() 返回一个关联数组包含有 path 的信息。
包括以下的数组元素:
- [dirname]
- [basename]
- [extension]
绕过方法
使用点加空格 1.php. 获取到的后缀为点空格 在window中点空格默认会去除所以剩下1.php
第二十关
先检查文件类型,后检查是否上传了文件名没有则为文件的名字,判断是否为数组,若不是则以点分割返回一个数组,取数组最后一位数为后缀,文件保存为reset输出数组第一个数,和最后一位数保存
绕过方法
php修改后缀jpg上传捉包
文件类型已经为image/jpeg
修改上传路径为一个数组,当获取文件后缀时为jpg,合成文件名为数组第一个,和最后一个,当我们修改jpg为数组的2时,1此时是空的数组一共有三位数,但是实际只有两位,所有获取到的值为空
此时上传后的文件为1.php.
文件上传之靶场upload-labs (11-20)的更多相关文章
- 文件上传漏洞靶场分析 UPLOAD_LABS
文件上传漏洞靶场(作者前言) 文件上传漏洞 产生原理 PASS 1) function checkFile() { var file = document.getElementsByName('upl ...
- jQuery文件上传插件jQuery Upload File 有上传进度条
jQuery文件上传插件jQuery Upload File 有上传进度条 jQuery文件上传插件jQuery Upload File,插件使用简单,支持单文件和多文件上传,支持文件拖拽上传,有进度 ...
- DVWA 黑客攻防演练(五)文件上传漏洞 File Upload
说起文件上传漏洞 ,可谓是印象深刻.有次公司的网站突然访问不到了,同事去服务器看了一下.所有 webroot 文件夹下的所有文件都被重命名成其他文件,比如 jsp 文件变成 jsp.s ,以致于路径映 ...
- Php文件上传类class.upload.php
简介 Class.upload.php是用于管理上传文件的php文件上传类, 它可以帮助你快速的给自己的网站集成上传文件功能.不仅如此,此分类还有一些列的处理功能,可以对上传的文件或者本地的文件进行处 ...
- Spring MVC-表单(Form)标签-文件上传(File Upload)示例(转载实践)
以下内容翻译自:https://www.tutorialspoint.com/springmvc/springmvc_upload.htm 说明:示例基于Spring MVC 4.1.6. 以下示例显 ...
- JQuery文件上传插件JQuery.upload.js的用法简介
JQuery文件上传插件,这个插件很小,用法很简单,效果却很棒.注意:JQuery版本要求1.8及以上,大家执行如果没效果,则检查JQuery版本,如果是1.8及以上,则该插件源码中的.size()需 ...
- 文件上传漏洞靶场:upload-labs安装及第一关教程
注:本文仅供学习使用,请勿用于非法操作,后果与作者无关!!! 一.简介 upload-labs是一个使用php语言编写的,专门收集渗透测试过程中遇到的各种上传漏洞的靶场.旨在帮助大家对上传漏洞有一个全 ...
- vuetify | vue | 文件上传组件 | file | upload | form input[type="file"]
今天无聊地写vuecli3听歌的时候,遇到了上传文件到Django的自我需求,然后就到vuetify的表单组件里找upload btn,发现居然没有!!! 顿时惊了个呆,要知道之前用element做操 ...
- 文件上传之靶场upload-labs (1-10)
第一关 sj 绕过 源码如下: lasIndexOf是返回函数最后一次出现的地方(从右到左) substring是用来截取函数的 indexOf是返回 表示从.出现的地方开始截取并判断是否在允许的字符 ...
随机推荐
- wpf的控件树
转载自:控件树
- Python - 集合 - 第十一天
Python 集合 集合(set)是一个无序的不重复元素序列. 可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建 ...
- postman强大的团队协作功能
今天无意在调项目的接口 ,使用的postman工具 ,自己写的接口信息,只能自己看 ,感觉有点不方便,如果一个公司多名测试,如果一个人写接口信息,大家都能用,就会很节约时间 所以团队协作的功能就诞生了 ...
- 深入浅出《设计模式》之工厂模式(C++)
前言 模式介绍 在之前简单工厂模式中,我们介绍了简单工厂模式的缺陷是违背了开放-封闭原则.如果在面馆中添加了烤海参,那将会修改waiter工厂类.违背了类内封闭原则. 还以面馆为例,现在两种面,用一个 ...
- C# 常用类库(字符串处理,汉字首字母拼音,注入攻击,缓存操作,Cookies操作,AES加密等)
十年河东,十年河西,莫欺少年穷 学无止境,精益求精 记录下字符串类库,方便今后查阅 主要包含了字符串解决,去除HTML,SQL注入攻击检测,IP地址处理,Cookies操作,根据身份证获取性别.姓名. ...
- vue Router——进阶篇
vue Router--基础篇 1.导航守卫 正如其名,vue-router 提供的导航守卫主要用来通过跳转或取消的方式守卫导航.有多种机会植入路由导航过程中:全局的, 单个路由独享的, 或者组件级的 ...
- 团队作业第3周——需求改进&系统设计
目录 团队作业第3周--需求改进&系统设计 1.需求&原型改进 2.系统设计 3.Alpha任务分配计划 4.测试计划 1 测试术语 4.2 有关项目人员组成 2 任务概述 3.测试策 ...
- tp5中使用原生sql查询总结【转】
注意事项: 1.先在database.php中配置好数据库 2.只要是数据库操作必须引用 use/think/Db;严格区分大小写. 下面是方法: public function hello5() { ...
- ZKEACMS 无法运行问题汇总
前言 如果你还不知道ZKEACMS,不妨先了解一下. ASP.NET MVC 开源建站系统 ZKEACMS 推荐,从此网站“拼”起来 官方地址:http://www.zkea.net/zkeacms ...
- 通过premake生成vs工程文件
visual studio的工程视图,在引用外部目录时非常麻烦,这时候可以使用premake一键生成工程文件,自动配置好工程的各种属性,还有目录的组织结构. 示例:如下是一个c++的外部目录结构,我们 ...