文件上传漏洞:pikachu靶场中的文件上传漏洞通关

目录

1、文件上传漏洞介绍

2、pikachu-client check

3、pikachu-MIME type

4、pikachu-getimagesize


最近在学习文件上传漏洞,这里使用pikachu靶场来对文件上传漏洞进行一个复习+练习

废话不多说,开整

1、文件上传漏洞介绍

pikachu靶场是这样介绍文件上传漏洞的:

文件上传功能在web应用系统很常见,比如很多网站注册的时候需要上传头像、上传附件等等。当用户点击上传按钮后,后台会对上传的文件进行判断 比如是否是指定的类型、后缀名、大小等等,然后将其按照设计的格式进行重命名后存储在指定的目录。

如果说后台对上传的文件没有进行任何的安全判断或者判断条件不够严谨,则攻击着可能会上传一些恶意的文件,比如一句话木马,从而导致后台服务器被webshell。

所以,在设计文件上传功能时,一定要对传进来的文件进行严格的安全考虑。比如:
--验证文件类型、后缀名、大小;
--验证文件的上传方式;
--对文件进行一定复杂的重命名;
--不要暴露文件上传后的路径;
--等等...

总结一下文件上传漏洞成功需要有下列四大前提:

  1. 目标具有文件上传功能

  2. 上传后的文件能够被Web服务器解析执行

  3. 知道文件上传到服务器后的存放的物理路径和文件名称

  4. 目标文件可以被用户访问

这里借用大佬总结好的一个图片就可以很好的阐述文件上传的整个过程、防御手段和绕过方法:

图片

下面就对pikachu靶场中的文件上传模块进行通关来练习一下文件上传漏洞 

2、pikachu-client check

来到第一关client check关卡可以看到如下页面:

可以看到我们可以上传一个图片,并且页面也说明了“只允许上传图片”的字样,点击提示可以看到 这一关的检验应该是在前端检验的

尝试上传一个php文件:

可以看到不让上传php文件,那么我们想要上传php文件必须要绕过限制:

方法1:浏览器禁用JS

我这里使用的是火狐浏览器,其他浏览器可以去百度搜:

将true修改为false后再次尝试上传php文件:

可以看到现在就可以上传成功了,访问该文件

可以看到成功解析

方法2:抓包修改后缀

第二种方式就是新建一个php文件然后内容是phpinfo();

然后将后缀修改为jpg,上传文件时,抓包修改后缀就可以看到成功上传了

修改前:

修改后:

可以看到确实上传了

尝试访问:

成功解析

3、pikachu-MIME type

下面来到了第二关,MIME type ,可以看到如下页面:

还是一个上传页面,提示可以看到让我们MIME type了解一下,那么我们就来了解一下:

MIME(Multipurpose Internet Mail Extensions)类型是一种标准,用于标识在互联网上传输的文件的类型和格式。每个MIME类型都由一个唯一的标识符表示,通常以文件的扩展名结尾,例如"text/plain"表示纯文本文件,"image/jpeg"表示JPEG图像文件。

MIME类型在Web开发中非常重要,因为它们告诉浏览器如何处理特定类型的文件。例如,如果服务器将一个文件标识为"text/html"类型,浏览器将会以HTML格式显示它,而如果文件是"image/png"类型,浏览器将会以PNG格式显示它。

知道了MIME是啥了后我们来尝试上上传一下:

可以看到这里图片只能上传指定格式的,这说明后端检测使用了白名单格式,那么我们可不可以像上面一样先上传一个jpg文件抓包然后修改后缀绕过限制呢?实践一下:

可以看到也是上传成功了

尝试访问:

成功解析

这里也可以进行反向操作,即先上传一个php文件,抓包,将MIME修改为图片的格式也是可以绕过限制上传成功的

尝试访问:

成功解析

4、pikachu-getimagesize

来到这一关,可以看到还是熟悉的页面,点击提示会发现需要了解婴喜爱getimagesize

那么来学习一下getimagesize:getimagesize是一个PHP函数,用于获取图像文件的尺寸和类型。该函数可以接受一个图像文件的路径作为参数,并返回一个包含图像宽度、高度和MIME类型的数组。

下面来试着上传一个php文件:

上传一个php文件可以发现提示上传的后缀名不能为空,那么也就是说如果四非jpg/jpeg/png中的一个后端就会将后缀置为空,下面就要尝试绕过限制,抓包阐尝试:

尝试大小写绕过:

尝试双写绕过:

可以看到大小写和双写都无法绕过

这里我发现自己忘记了这一关是getimagessize,才想起来这个意思就是看你文件的文件头,不同的文件又不同的文件头,即便你改了后缀,文件头是不变的

因此这里需要保证上传的文件是图片,但是还是想要带上自己的php代码,这里就需要使用到“图片马”了

需要一张图片+一个php文件,使用下列命令生成图片马:

然后将生成的图片上传:

可以看到成功上传了,尝试访问:

可以看到成功的访问了,但是并没有解析,说明还是还是没有用的,这里就要配合后面我要复习的文件包含漏洞来使用才能正常访问

访问如下URL,利用文件包含来访问就可以成功的解析了:

http://localhost/pkav-labs/vul/fileinclude/fi_local.php?filename=../../unsafeupload/uploads/2024/05/13/1937146641fe79d292f581494212.jpg&submit=%E6%8F%90%E4%BA%A4

到此pikachu中的文件上传漏洞就通关了

参考链接:

文件上传漏洞:upload-labs靶场通关_文件上传漏洞靶场闯关教程-CSDN博客

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一键批量整理神器:轻松将相同名称文件归类至指定文件夹,告别繁琐文件管理!

信息爆炸的时代,电脑中的文件数量如潮水般涌现,管理起来令人头疼不已。您是否曾因为文件命名不规范而耗费大量时间寻找某个重要资料?是否曾因为文件散落各处而影响了工作效率?现在,我们为您隆重推荐一款文件管理神器—…

APM2.8如何供电

APM2.8飞控供电有两种, 1.电流计供电, 2.带BEC(稳压功能)的电调供电 飞控有一个JP1,它是一个供电选择接口,当插入跳线帽时,飞控用带BEC电调供电,当不插入时,用电流计供…

英语新概念2-回译法-lesson16

第一次回译 if you ___ your car on a wrong place, the traffic police man will find you quickly. If he do not give you the ticket,you are lucky.However,the ___ not all like this,The police man is __ sometimes.I had a holiday in Sweden, I found a ___ in my c…

《java数据结构》--顺序表详解

一.顺序表的概念🙉 🐱顺序表是一段物理地址连续的储存单元,一次储存数据元素的线性结构。一般情况下采用数组储存,和数组的增删查改类似。 但是顺序表和数组还是有区别的比如,数组按照是否可以扩容可以分为&#xff…

深入分析 Android Activity (八)

文章目录 深入分析 Android Activity (八)1. Activity 的资源管理1.1 使用资源 ID1.2 动态加载资源1.3 资源的本地化1.4 使用 TypedArray 访问资源 2. Activity 的配置变更处理2.1 在 Manifest 文件中声明配置变更2.2 重写 onConfigurationChanged 方法2.3 保存和恢复实例状态 …

网页图片加载慢的求解指南

网页/图片加载慢的求解指南 一、前言与问题描述 今天刚换上华为的HUAWEI AX3 Pro New,连上WIFI后测速虽然比平时慢,但是也不算太离谱,如下图所示: 估计读者们有也和作者一样,还没意识到事情的严重性😁。 …

Android Display Graphics #1 整体框架介绍一

软件基础 Android的framework层提供了一系列的图像渲染API,可绘制2D和3D。简单理解就是上层开发APP的小伙伴提供了接口,开发者可以直接显示对应的自己内容。但如果掌握了Display底层逻辑再写上层app,会有掌控力,出问题可以根据lo…

【ai】chatgpt的plugin已经废弃

发现找不到按钮,原来是要申请: https://openai.com/index/chatgpt-plugins/ 发现申请已经跳转了,好像是废弃了? 不接受新插件了,但是openai的api 是可以继续用的。 https://openai.com/waitlist/plugins/We are no longer accepting new Plugins, builders can now create…

医疗小程序源码SpringBoot2.X + Vue + UniAPP全栈开发

源码说明: 看到好多坛友都在求SpringBoot2.X Vue UniAPP,全栈开发医疗小程序 – 带源码课件,我看了一下,要么链接过期,要么课件有压缩密码。 特意整理了一份分享给大家,个人认为还是比较全面的。 希望…

最后两天!百度云加速正式停服

百度云加速将于5月30日,正式关闭服务器,仅保留官网首页通知。 届时如网站还在百度云加速接入的,将无法正常访问! 如果您还有域名在百度云加速接入的请尽快做迁移安排,以免造成损失。 目前在主机吧购买的域名已经全部…

使用华为快传同步文件至电脑

使用华为快传同步文件至电脑,电脑端未发现设备解决办法 1、手机和电脑连同一网络 2、打开手机华为分享,打开电脑网络 3、网络中找到设备,输入账户密码进行连接(未找到设备往下继续看) 未找到设备解决办法&#xff1…

攒粒是什么?怎么用攒粒赚钱?

攒粒简介 攒粒的前身是91问问,隶属于上海道道永泉市场调查有限公司,是一家专业的全球在线调研服务公司,也是是国内排名前列的社区调查之一,10年在线调研,600万会员亲身体验,提供网络调查、市场调查、问卷调…

Go源码--sync库(1)

简介 这篇主要介绍 sync.Once、sync.WaitGroup和sync.Mutex sync.Once once 顾名思义 只执行一次 废话不说 我们看源码 英文介绍直接略过了 感兴趣的建议读一读 获益匪浅 其结构体如下 Once 是一个严格只执行一次的object type Once struct {// 建议看下源码的注解&#xf…

联想应用商店开发者常见问题FAQ

Phone/Pad应用常见问题 应用上传FAQ Q. 上传apk包时,提示“该包名已存在”如何处理? A:若应用包名出现冲突,请先核实该账号是否已存在该包名产品,若不在该账号下,请进行应用认领。 Q. 应用是否可以授权…

AI图书推荐:用ChatGPT和Python搭建AI应用来变现

《用ChatGPT和Python搭建AI应用来变现》(Building AI Applications with ChatGPT API)将ChatGPT API与Python结合使用,可以开启构建非凡AI应用的大门。通过利用这些API,你可以专注于应用逻辑和用户体验,而ChatGPT强大的…

爬虫技术升级:如何结合DrissionPage和Auth代理插件实现数据采集

背景/引言 在大数据时代,网络爬虫技术已经成为数据收集的重要手段之一。爬虫技术可以自动化地从互联网上收集数据,节省大量人力和时间成本。然而,当使用需要身份验证的代理服务器时,许多现有的爬虫框架并不直接支持代理认证。这就…

three.js能实现啥效果?看过来,这里都是它的菜(11)

Hi,这是three.js动画效果第十一期分享了。 在 Three.js 中创建光线流边动画可以通过使用 ShaderMaterial 和自定义的着色器程序来实现。下面是一个简单的示例代码,演示了如何在 Three.js 中创建光线流边动画: // 创建场景 var scene new T…

【Qt】事件

文章目录 1 :peach:事件介绍:peach:2 :peach:事件的处理:peach:3 :peach:按键事件:peach:3.1 :apple:单个按键:apple:3.2 :apple:组合按键:apple: 4 :peach:鼠标事件:peach:4.1 :apple:鼠标单击事件:apple:4.2 :apple:鼠标释放事件:apple:4.3 :apple:鼠标双击事件:apple:4.4 :a…

python下载安装教程(最新图文下载)__python下载

一、下载安装包 官网下载,下载流程参考下面截图。 下载安装python安装包,网盘点此下载::点击此处直接下载 点击图片中的“Download”按钮,然后选择需要下载的版本,最后在跳转的页面中,选择你…

VM中Ubuntu16.04的下载以及ROS—kinetic的版本下载

一、Ubuntu镜像地址 转载备份一下; 官方下载地址(不推荐) https://www.ubuntu.com/downloadhttps://www.ubuntu.com/download 中科大源 Index of /ubuntu-releases/16.04/http://mirrors.ustc.edu.cn/ubuntu-releases/16.04/ 阿里云开…