文件上传,内容逻辑数组绕过(22)

news2024/11/27 0:40:17

uploadd  第十三关

这一关告诉我们的,有一些上传漏洞需要配合这个文件包含和加解密。

这个先在一个图片源码里面写入php后门的脚本代码

这里也可以手工注入到图片的源码里面来,手工注入,如果采用16进制打开这个图片,这个图片在生成保存的时候,就不会出问题,否则会无法正常打开。

之后就把那个带有两个源码的jpg文件上传上去,打开图片的地址,想执行后门代码,需要利用到文件包含漏洞,文件包含漏洞会直接将包含的文件以后门的格式去执行,以当前文件包含的脚本去执行,因为是php,就会放到php去执行。我们打开文件包含地址

 接受file的参数给变量file,再用include去包含变量file,在这里我们就可以复制这个地址,然后写上参数,?file=,就等于我们刚刚上传的图片的地址/upload/8020230514105109.png,被包含之后png里面的php脚本代码就会被执行,

这个没有写php后门脚本,随便写一个php的脚本,没有密码需要,如果是后门文件的话,需要输入密码执行

13.14.15.16关都运用到了文件包含漏洞,只是代码有一些不同,我们看一下13关的代码, 这个是头部验证,每一个格式都有自己特有的头部,比如jpg格式

 所有的png格式都是这个东西,别的格式也有别的特有的头部。通过判断文件头来判断是什么格式,但这个可以通过后期的伪造,为造出来其他格式。

第十四关

第十四关的代码验证用的另一种方式,

 这里用到了getimagesize函数,这个函数运是获取到图片里面的信息,而如果不是图片格式的话就没有返回值,就不能执行后面的代码,这个就限制了文件的类型,只能上传图像,排除解析漏洞和其他漏洞,只能配合别的漏洞去执行。

第十六关

 exif_imagetype

  这个代码就是获取到,获取图片的类型,所以这个函数也差不多就只会获取图片格式的信息,获取别的就没有返回值,就不会执行下面上传代码。所以就只能上传图片。这个代码就已经相当安全了。

第十六关,

代码也是判断图片类型,不过是一个格式,一个格式去判断的看,jpg,jpeg,也是检测文件信息的,这个代码是相当安全的。

过关的话就配合文件包含漏洞。

之后又开始一个重点

第十七关,

就没有配合漏洞了,第十七关涉及到的漏洞是二次渲染,

二次渲染是,在文件上传的时候有的网站,会先有一个缩小的图片的叫浓缩图或者拓展图,下面还会有保存或者删除类似的按钮,这种一般就涉及到二次渲染,先上传到服务器,这个服务器会有保存或者删除这个操作,这个就相当于在中间停了一下,让你选择保存或者删除,每个图片的规格都不一样,有大有小,有一些网站为了图片在页面中显示正常,会把你头像先截取然后按照他的规格来保存。   

二次渲染的过程中会涉及到一个叫逻辑安全的问题,上传第一次的时候渲染到截取对方,对方服务器已经有了,就是他验证的地方是在第一步还是第二部。

我们看一下十七关的代码,

这个代码意思第三行接受鼠标提交事件

 第四行截取jpg,png,gif,等等

第五行,在这个文件上传中取他的名字

第六行,把文件的后缀取出来给变量file_ext,后门十一行就直接用move_uploaded_file,去移动文件了把tmp_file,移动到变量upload_file上来了, 第八行就是他声明的路径uoload_path,加上 .  /  加上名字,没有验证,就直接移动到了指定目录去了,下面才开始验证是否保存。

这个是存在二次渲染的逻辑漏洞,这个在验证之前就已经把文件放到目录去了。这个代码还有一个重命名,所以到了之后也找不到自己上传的文件,绕过的方法运用到了资源占用,就是在上传的时候,刚好到文件夹里面还没有命名之前访问到,代码就没办法对他重命名了,也叫文件竞争。

用十八关演示一下,

因为前面没有验证,直接上传一个php的文件,然后burp抓住数据包, 然后选择一个可以修改的且没事的作为可修改字节,然后重复上传数据包,这时候就打开网站一直访问上传的php文件,知道出现图中这个界面,就是访问到了,只要我们访问到了,我们就上传成功了!他不能在后面修改它。

网站有二次上传的时候就要多观察,判定符不符合二次渲染。这一关漏洞的原因是因为直接把文件放了进去,在第二步才做的验证。

第十九关

第十九关是黑名单验证,文件夹绕过,十九关源码

这个源码的黑名单验证啥都的就不说了,直接说重点,十三行代码把临时文件temp的信息转移到img来,十二行代码是img等于upload_path目录加上/和file的名字,file的名字是七行等于post提交的save的值,也就是说file的名字值我们是可以控制的,这一关可以有两种方法绕过,第一个看着文件名,我们看一下数据包,就有一个叫save name

利用这个绕过漏洞

把save值修改成php.%00.jpg,因为是post提交方法,不会自动解码,所以%00要url编码一下上传,不然对方服务器网站识别不出来它截断的意思,因为截断了最后到文件夹里面的就只剩下php。

第二种方法

我们同样抓包看一下save的值,然后通过的源码的分析,

如果这个文件名字后门还有/.  ,验证的时候当作php/.   ,就会绕过验证上传,然后到文件夹里面也会被强制为php文件,就会以正常php文件解读,那怎么利用就在数据包里面修改

就修改成跟箭头指的一样的值就可以。文件就会上传成功,还是php文件。

这个就是未造成与一个文件夹的情况,他会以为是在

upload-19.php这个文件下面上传一个点,但是系统接受这个值也会会把php的那个当作文件来处理。

第二十关,先看一下源码 

这里运用到了数组接受+目录命名绕过。

第四行哪里写了是检测mime值的

第十行接受文件名(save name值)来检查测的,跟十九关相比多了一个十一行,is_array,判断是是一个数组,是数组就执行,

第十六行是个类型检测,检测上传类型,是一个白名单类型。jpg等格式不在截取的变量ext里面,变量ext从上面第十五行来的,end是截取文件最后的东西,接受截取的后缀,然后就去判断后缀是否在白名单里面,因为十六行前面是给感叹号是不在的时候,不在就截止了,在里面就进入下一个检测。

二十行变量file-name等于reset接受获取变量file前面的,文件名,中间跟个.  ,然后加上后面的后缀,变量file【count(变量file)-1】,

上图做个比方,xiaodi。jpg,数组话就分为  xiaodi    。   jpg 三个数组,假如数组名字叫x,数组0就是xiaodi,数组2。,数组2就是jpg,这里有三个数组,所以count(变量fiel)等于3,3-1=2,所以是变量file的第三个数组,就是后缀名。就是等于他们三个合在一起。

在后面的验证就在十九关出现过了,临时文件temp指向img,img是upload/变量file的文件目录组合,就是正常的文件上传验证了。   

这一关分为几个严重呢,第一个是mime的验证,这个在数据包里面改成白名单相关的进行了,

第二个是is-arryr判断是不是数组,是数组在进行后门的验证,不是数组就跳过了。然后下面的验证刚刚说了。

来试着绕过一下,我们上传一个php的文件,先抓住数据包,在save值哪里修改为,加上/.   ,看看提示是上面,绕过到哪一步了,提示的是禁止上传改后缀文件,在十七行哪里被拦截了,因为他是白名单,文件名格式必须的是白名单里面才行。

我们上传一个正常的文件,在数据包里面save的值是这个

 如果我们这样写upload/upload-20.php/.jpg,这个格式验证的是最好jpg,而上去的还是php的文件,,利用的目录文件,网站会以为是在php里面写入.jpg。

绕过开始,我们上传一个带有php脚本的图片格式文件,

然后把抓住的数据包源码修改成这样,变成数组的形式,检查的检查的最后一个数组加上jpg白名单刚好可以绕过去,看结果

这个样子文件上传成功,最好是php后面加上一个斜杠,这个我写早了,这个上传成功1了。

php文件。

这个代码里面支持数组。

实战情况下,很难绕过这种情况的网站,是碰不到这种情况,我们只能在代码中这样做,我们实战看不到代码,只能一个一个试试,这种只会在比赛中出现,会给一些代码去做。

我们再来说一下文件上传的漏洞,

tmocat方法任意写文件漏洞

文件上传的漏洞不只是程序里面的漏洞,也会爆出类似cve的漏洞,是一些上传环境里面的辅助漏洞,我们举个例子

tomcat任意上传漏洞,tomcat是一个搭建平台,上传漏洞不仅在网站层面上,之前演示的漏洞但是代码层面的,这个就不是

他是网站搭建的时候,漏洞也会在中间件层面,就是搭建件。

这也是为什么思维导图构造,验证和绕过是代码层面的,所以cve不在验证和绕过里面,而cve在漏洞修复里面,它属于其他层面和代码没有任何关系。

打开靶场环境

 打开好啦,根据网页上的打开靶场网站

这个这里会有一个共同的疑问怎么知道这个搭建件和版本,这时候中间件信息收集,用nmap扫,端口扫描都可以扫出来,或者网站的源码返回看看

现在如何利用这个漏洞,访问直接抓数据包

靶场提示

 复制这串代码,该修改的对方修改为网站的参数,下面那个shell是可以自定义的时候,就是写入的字符串,这时候我们写入一个jsp的后门,就可以获取到网站的数据,直接去网上搜jsp后门

 这样子上传上去之后,访问这个1.jsp,然后根据搜的后门访问方式去访问

 成功了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/538504.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

okhttp篇4:RetryAndFollowUpInterceptor

在上一篇 okhttp篇3:RealCall_yolan6824的博客-CSDN博客 中讲到RealCall无论是在execute还是enqueue方法中,都是通过getResponseWithInterceptorChain方法获取Request对应的Response的。而getResponseWithInterceptorChain这个方法,又是通过…

基于PyQt5的图形化界面开发——Windows内存资源监视助手[附带编译exe教程]

基于PyQt5的图形化界面开发——Windows内存资源监视助手[附带编译exe教程] 0. 前言1. 资源信息获取函数——monitor.py2. UI界面——listen.py3. main.py4. 运行效果5. 编译 exe 程序6. 其他PyQt文章 0. 前言 利用 PyQt5 开发一个 windows 的资源监视助手,在使用虚…

【vimsolo】让vim看起来像VSCode:颜色主题和状态栏的配置

文章目录 1. 目的2. 理念: vimsolo3. vimrc: 配置颜色4. vimrc: 配置状态栏5. 拷贝颜色主题和.vimrc: python安装脚本 1. 目的 习惯了 VSCode 默认的配色:黑色主题,蓝色状态栏。偶尔使用 Vim 时想让 vim 伪装的像 VSCode,不考虑花…

Web 测试和 App 测试重点总结

单纯从功能测试的层面上来讲的话,App 测试、Web 测试在流程和功能测试上是没有区别的,但由于系统结构方面存在差异(web 项目,b/s 架构;app 项目,c/s 结构)在测试中还是有不同的侧重点内容&#…

ZED使用指南(八)Depth Sensing

ZED立体相机再现了人类双目视觉的工作方式。通过比较左眼和右眼看到的两种视图,不仅可以推断深度,还可以推断空间中的3D运动。 ZED立体相机可以捕捉到场景的高分辨率3D视频,通过比较左右图像之间的像素位移可以估计深度和运动。 深度感知 …

CTFHub-ctfhub-Git泄露-Log

CTFHub-ctfhub-Git泄露-Log 当前大量开发人员使用git进行版本控制,对站点自动部署。如果配置不当,可能会将.git文件夹直接部署到线上环境。这就引起了git泄露漏洞。请尝试使用BugScanTeam的GitHack完成本题 1、dirsearch扫描 github上下载dirsearch-master 命令F…

SpringMVC第二阶段:@RequestMapping注解详解

RequestMapping注解详解 RequestMapping是给个方法配置一个访问地址。就比如web学习的Servlet程序,在web.xml中配置了访问地址之后,它们之间就有一个访问映射关系。 1、value属性 value 属性用于配置方法对应的访问地址. /*** RequestMapping 可以配…

JavaScript实现背景图像切换3D动画效果

🐱 个人主页:不叫猫先生 🙋‍♂️ 作者简介:2022年度博客之星前端领域TOP 2,前端领域优质作者、阿里云专家博主,专注于前端各领域技术,共同学习共同进步,一起加油呀! &am…

Flask全套知识点从入门到精通,学完可直接做项目

目录 Flask入门 运行方式 URL与函数的映射(动态路由) PostMan的使用 查询参数的获取 上传文件 其它参数 url_for 函数 响应-重定向 响应-响应内容 响应-自定义响应 Flask模板 模板介绍 模板的使用 模板-传参 模板使用url_for函数 过滤器介绍 Jinja模板自带过滤器 流程…

DTFT和DFT有何区别?一文为你讲解清楚

很多人在开始学习数字信号处理的时候,对于各种傅里叶变换特别是离散傅里叶变化的概念及作用完全不清楚,IC修真院在网上整理了关于DTFT、DFT的各知识点。下面就来了解一下关于DTFT和DFT的区别吧。 DTFT, DFT 的区别是含义不同、性质不同、用途…

Elasticsearch集群搭建与相关知识点整理

前言:大家好,我是小威,24届毕业生,在一家满意的公司实习。本篇文章参考网上的课程,介绍Elasticsearch集群的搭建,以及Elasticsearch集群相关知识点整理。 如果文章有什么需要改进的地方还请大佬不吝赐教&am…

C++刷题--选择题4

1, 在()情况下适宜采用 inline 定义内联函数 A 函数体含有循环语句 B 函数体含有递归语句 C 函数代码少、频繁调用 D 函数代码多,不常调用 解析 C,以inline修饰的函数叫做内联函数,编译时C编译器会在调用内联函数的地方…

SpringSecurity实现角色权限控制(SpringBoot+SpringSecurity+JWT)

文章目录 一、项目介绍二、SpringSecurity简介SpringSecurity中的几个重要组件:1.SecurityContextHolder(class)2.SecurityContext(Interface)3.Authentication(Interface)4.AuthenticationMana…

c++项目环境搭建(VMware+linux+ubantu+vscode+cmake)

想运行一个c项目,但是环境怎么整呢?b站走起!!! 本文需要的安装包 链接:https://pan.baidu.com/s/1XJbR2F1boQ-CqV8P71UOqw 提取码:swin 一、在虚拟机中安装ubantu 八分钟完成VMware和ubunt…

Git命令大全,涵盖Git全部分类,非常值得收藏!

Git是一个分布式版本控制系统,可以让开发者在不同的平台和环境中协作开发项目。Git有很多命令,可以用来管理项目的状态、历史、分支、合并、冲突等。本文将介绍一些Git常用的命令,并给出示例和分类。 配置命令 配置命令可以用来设置Git的全局…

算法设计与分析:贪心法

目录 第一关:贪心法 任务描述: 相关知识: 贪心法的优缺点: 例题: 解题分析: 程序实现: 关键代码: 编程要求: 测试说明: 第二关:最小生成…

体验了下科大讯飞版ChatGPT,厉害了!

前几天科大讯飞的星火认知大模型发布了,我刚好有朋友在科大讯飞工作,于是就第一时间体验了一波。 一番体验下来确实比我预想的效果要好,没想到国产模型的效果还不错,我试了很多方面,比如通用常识功能、写作功能、学习…

【论文阅读】基于鲁棒强化学习的无人机能量采集可重构智能表面

只做学习记录,侵删原文链接 article{peng2023energy, title{Energy Harvesting Reconfigurable Intelligent Surface for UAV Based on Robust Deep Reinforcement Learning}, author{Peng, Haoran and Wang, Li-Chun}, journal{IEEE Transactions on Wireless Comm…

今日不足——学习目标做了但是没执行

今天复习概率论的时候我发现我复习数值计算方法的时候没有严格按照步骤来,如果按照步骤来我的最小二乘本来可以不用错的。我在复习时候的步骤之间就是抛开书本然后之间进入应用然后遇到不会的回头复习概念虽然缺失能做题目了但是不了解每个知识点的原理和思想&#…

el-drawer 被遮罩层覆盖 显示异常

这是由于元素的一些层级设置不同导致的&#xff0c;所以蒙层被放在了最顶端。解决方法就是加上如下2行代码: <el-drawer title"我是标题" :visible.sync"showDrawer" :direction"ltr" :append-to-body"true":modal-append-to-body&…