upload-labs通关笔记-第15关 文件上传之图片马getimagesize绕过

news2025/5/26 0:05:50

系列目录

upload-labs通关笔记-第1关 文件上传之前端绕过(3种渗透方法)

upload-labs通关笔记-第2关 文件上传之MIME绕过-CSDN博客

upload-labs通关笔记-第3关 文件上传之黑名单绕过-CSDN博客

upload-labs通关笔记-第4关 文件上传之.htacess绕过-CSDN博客

upload-labs通关笔记-第5关 文件上传之.ini绕过-CSDN博客

upload-labs通关笔记-第6关 文件上传之大小写绕过-CSDN博客

upload-labs通关笔记-第7关 文件上传之空格绕过-CSDN博客

upload-labs通关笔记-第8关 文件上传之点绕过-CSDN博客

upload-labs通关笔记-第9关 文件上传之::$data绕过-CSDN博客

upload-labs通关笔记-第10关 文件上传之点多重过滤(空格点绕过)

upload-labs通关笔记-第11关 文件上传之双写绕过-CSDN博客

upload-labs通关笔记-第12关 文件上传之白名单GET法绕过

upload-labs通关笔记-第13关 文件上传之白名单POST法绕过

upload-labs通关笔记-第14关 文件上传之图片马文件头绕过

upload-labs通关笔记-第15关 文件上传之图片马getimagesize绕过

upload-labs通关笔记-第16关 文件上传之图片马exif_imagetype绕过

upload-labs通关笔记-第17关文件上传之二次渲染-CSDN博客

upload-labs通关笔记-第18关文件上传之条件竞争-CSDN博客

upload-labs通关笔记-第19关文件上传之条件竞争-CSDN博客

upload-labs通关笔记-第20关 文件上传之杠点绕过-CSDN博客

upload-labs通关笔记-第21关 文件上传之数组绕过-CSDN博客

目录

一、图片马

二、文件包含

三、文件包含与图片马

四、图片马制作方法

五、源码分析

六、制作图片马

1、创建脚本并命名为test.php

2、准备制作图片马的三类图片

3、 使用copy命令制作图片马

七、渗透实战

1、GIF图片马渗透

(1)上传gif图片马

(2)打开文件包含渗透网址 

(3)文件包含利用

2、JPG图片马渗透

3、PNG图片马渗透


本文通过《upload-labs靶场通关笔记系列》来进行upload-labs靶场的渗透实战,本文讲解upload-labs靶场第15关图片马之getimagesize绕过渗透实战。

一、图片马

  • 定义:图片马是一种将恶意脚本代码隐藏在图片文件中的特殊文件,它结合了图片的外观和脚本的执行能力,通常利用文件包含访问图片马来实现攻击。
  • 制作原理:一般是利用图片文件格式的特性,将恶意脚本代码添加到图片文件的末尾或其他可利用的位置。由于图片文件在结构上有一些冗余部分或者对额外数据有一定的容忍度,所以可以在不影响图片正常显示的情况下嵌入恶意代码。例如,在一些图片文件格式中,文件头部分定义了图片的格式、尺寸等信息,而文件尾部可能存在一些未使用的空间,攻击者就可以将恶意脚本代码写入这些空间。

二、文件包含

文件包含风险是指 Web 应用程序在处理文件包含功能时,由于对用户输入的文件路径缺乏严格验证和过滤,导致攻击者可通过篡改参数指定恶意文件路径。攻击者能利用该文件包含来读取服务器敏感文件,或包含恶意脚本文件执行任意代码,从而获取服务器权限、篡改数据、植入后门等,严重威胁系统安全。

三、文件包含与图片马

通过文件包含访问图片马,可以使服务器执行包含恶意脚本的代码,具体步骤如下所示。

  1. 制作图片马:选择一张正常的图片,利用工具将恶意脚本代码嵌入到图片中。例如,对于 PHP 的图片马,可以在图片文件test15.jpg末尾添加一段 PHP 恶意代码,如<?php phpinfo();?>,这段代码会获取服务器的php版本信息。
  2. 上传图片马:通过网站的文件上传功能或其他途径,将制作好的图片马上传到目标服务器。如果服务器存在文件包含风险,且对上传文件的验证不严格,图片马就有可能成功上传。
  3. 利用文件包含访问图片马:攻击者通过构造特殊的 URL,利用文件包含让服务器包含并执行图片马中的恶意代码。例如,假设存在文件包含问题的页面是include.php,通过访问include.php?file=upload/test15.jpg,其中upload是图片马上传的目录,其中test15.jpg是图片马文件名,服务器就会执行图片马中的恶意代码,攻击者会获取服务器的php版本信息。

四、图片马制作方法

使用copy命令制作图片马的方法如下所示,首先打开cmd命令提示符,进入到图片文件test.jpg和脚本文件info.php所在的目录,然后执行以下命令即可生成test15.jpg图片马。

copy /b test.jpg + info.php test15.jpg
  • /b参数的作用是让copy命令以二进制模式进行文件合并,这样能保证图片文件的二进制数据不被破坏。
  • test.jpg是正常的图片文件。
  • info.php是包含恶意代码的脚本文件。
  • test15.jpg是最终生成的图片马文件。

五、源码分析

打开upload-labs靶场的第15关,源码如下所示。

本小节通过getimagesize这个函数是用于获取图像大小及相关信息,成功返回一个数组,失败则返回 FALSE 并产生一条 E_WARNING 级的错误信息,也就是说本节通过getimagesize()函数返回的图像类型信息,来判断上传的文件是否为可以上传的文件。故而本实验中,由于需要通过获取图像的真实大小信息,故而本例中上传的图片需要包含真是的图片信息,无法像上一小节只在脚本的首部添加图片的特征,需要通过使用图片和脚本结合的方式,使用copy命令来构造图片马,这样构造出来的图片脚本是可以通过getimagesize函数成功获取到大小的。

六、制作图片马

1、创建脚本并命名为test.php

脚本内容为显示服务器php服务信息,命名为test.php,具体内容如下所示。

<?php
phpinfo();
?>

2、准备制作图片马的三类图片

准备好三类较为简单的jpg、png和gif后缀的图片(a.jpg、b.gif、c.png),以及上一步制作的test.php脚本,具体如下所示。

3、 使用copy命令制作图片马

以本实验为例,三种后缀的图片马命令如下所示,其中/b 表示一个二进制文件,  + 表示将多个文件合并成一个文件,  /a 表示一个ASCII文本文件。

copy a.jpg/b + test.php /a test14.jpg
copyb.gif /b + test.php /a test14.gif
copy c.png /b + test.php /a test14.png

 执行copy制作图片马的效果如下所示。

于是制作好的图片马分别为test15.gif,test15.jpg,test15.png,具体如下所示。

七、渗透实战

1、GIF图片马渗透

(1)上传gif图片马

 如下所示上传成功,右键获取图片URL地址。

通过复制图片地址获取到URL地址如下所示。 

http://127.0.0.1/upload-labs/upload/5920211119074549.gif

(2)打开文件包含渗透网址 

点击如下红框的文件包含URL链接即可进入文件包含的网页,具体如下所示。

 进入文件包含主界面,url地址为:http://127.0.0.1/upload-labs/include.php,如下所示。

(3)文件包含利用

在文件包含页面访问图片马地址具体如下所示。

http://127.0.0.1/upload-labs/include.php?file=图片马的相对路径

图片马路径具体如下所示。

http://127.0.0.1/upload-labs/upload/5920211119074549.gif

所以文件包含访问图片马的URL应该如下所示。

http://127.0.0.1/upload-labs/include.php?file=upload/5920211119074549.gif

其中5920211119074549.gif是我们文件上传后的文件名,访问URL后出现大片乱码,如下所示。

向下拖动鼠标滚轮,效果如下所示,浏览器显示php的版本号7.3.30,此时证明我们成功绕过 getimagesize()的过滤信息。

2、JPG图片马渗透

由于.jpg文件.png文件的绕过与以上.gif文件绕过的方式相似,此处就不再重复列举,只提供最后的结果作为比较。test15.jpg上传界面如下所示。

test15.jpg上传成功画面如下所示。

右键获取图片马的URL地址,使用文件包含方法对其进行渗透,会显示php版本号,如下所示渗透成功。

url:http://127.0.0.1/upload-labs/include.php?file=upload/2220211119075425.jpg

3、PNG图片马渗透

test15.png图片马上传界面如下所示。

 test14.png上传成功画面如下所示,可见绕过了服务器的getimagesize检查。

 右键获取test15.png上传成功的URL地址,使用文件包含方法对其进行渗透,完整的利用URL地址如下所示,访问后成功显示php版本信息页面,渗透成功。

​url: http://127.0.0.1/upload-labs/include.php?file=upload/2520211119075910.png

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

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

相关文章

【游戏设计】游戏玩法与游戏机制

在游戏设计中&#xff0c;“玩法”&#xff08;Gameplay&#xff09;和“机制”&#xff08;Game Mechanic&#xff09;是两个频繁出现但容易混淆的概念。许多新手开发者、设计师甚至玩家常常将两者混为一谈。本文将通过定义、对比和案例解析的方式&#xff0c;清晰地阐明二者的…

Spring的资源Resource和ResourceLoader

两者区别和联系 Resource 和ResourceLoader 都是 Spring 框架中用于资源访问的接口 Resource 是“资源本身”&#xff0c;ResourceLoader 是“资源工厂/加载器”&#xff0c;负责创建 Resource。 ​ Resource:Spring 统一抽象的“资源”对象,可以表示文件、类路径下的文件、U…

【AI实战】从“苦AI”到“爽AI”:Magentic-UI 把“人类-多智能体协作”玩明白了!

Hello&#xff0c;亲爱的小伙伴们&#xff01;你是否曾经在深夜里&#xff0c;为了自动化点外卖、筛机票、抓网页数据焦头烂额&#xff1f;有没有幻想过哪天能出个“贴心AI管家”&#xff0c;一键点菜、搞定事务、自动操作网页&#xff0c;比你还懂你&#xff1f;更关键——还让…

Linux之 SPI 驱动框架- spi-mem 框架

一、框架变更的历程 1.1 旧框架图 1.2 新框架图 那么问题来了&#xff0c; 为什么要开发新的 SPI 存储器接口&#xff1f; 有了这个新的框架&#xff0c; SPI NOR 和SPI NAND 都可以基于相同的SPI控制器驱动进行支持了。m25p80 驱动将被修改成&#xff0c;使用spi-mem 接口&a…

振动分析 - 献个宝

1.一个自制的振动能量分析工具 这个分析工具似乎真的定位到了故障的具体位置。 1.1对一组实验室虚拟信号的分析结果: 1.2 对现场真实数据的分析结果 依照边频带的调制,和边频的缝隙宽度,基本定位到问题。 追加几份待看的文档: 齿轮结构的频谱特征 - 知乎使用 FFT 获得…

【论文阅读】——D^3-Human: Dynamic Disentangled Digital Human from Monocular Vi

文章目录 摘要1 引言2 相关工作3 方法3.1 HmSDF 表示3.2 区域聚合3.3. 变形场3.4. 遮挡感知可微分渲染3.5 训练3.5.1 训练策略3.5.2 重建损失3.5.3 正则化限制 4. 实验4.1 定量评估4.2 定性评价4.3 消融研究4.4 应用程序 5 结论 摘要 我们介绍 D 3 D^{3} D3人&#xff0c;一种…

高分辨率北半球多年冻土数据集(2000-2016)

关键数据集分类&#xff1a;冰冻圈数据集时间分辨率&#xff1a;10 year < x < 100 year空间分辨率&#xff1a;1km - 10km共享方式&#xff1a;开放获取数据大小&#xff1a;339.79 MB数据时间范围&#xff1a;2000-01-01 — 2016-12-31元数据更新时间&#xff1a;2022-…

基于开源AI智能名片链动2+1模式S2B2C商城小程序的管理与运营策略研究

摘要&#xff1a;本文通过分析开源AI智能名片链动21模式S2B2C商城小程序的技术架构与商业逻辑&#xff0c;探讨其在企业管理与运营中的实践价值。结合案例研究&#xff0c;论证该模式如何通过清晰的目标设定、动态反馈机制和资源整合能力&#xff0c;提升团队执行力与客户粘性。…

储能电站:风光储一体化能源中心数字孪生

在 “双碳” 目标引领下&#xff0c;我国能源产业加速向清洁低碳、绿色化转型&#xff0c;风能、太阳能等可再生能源的开发利用成为关键。然而&#xff0c;风能和太阳能的波动性、间歇性与随机性&#xff0c;给大规模接入电网带来挑战。储能技术的兴起&#xff0c;为解决这一难…

9. 现代循环神经网络

文章目录 9.1. 门控循环单元&#xff08;GRU&#xff09;9.1.1. 门控隐状态9.1.1.1. 重置门和更新门9.1.1.2. 候选隐状态9.1.1.3. 隐状态 9.1.2. 从零开始实现9.1.2.1. 初始化模型参数9.1.2.2. 定义模型 9.1.3. 简洁实现9.1.4. 小结 9.2. 长短期记忆网络&#xff08;LSTM&#…

视频太大?用魔影工厂压缩并转MP4,画质不打折!

在日常生活中&#xff0c;我们常常需要将视频文件转换成不同的格式以适应各种设备或平台的播放需求。魔影工厂作为一款功能强大且操作简单的视频转换工具&#xff0c;深受用户喜爱。本文中简鹿办公将手把手教你如何使用魔影工厂将视频转换为MP4格式&#xff0c;并进行个性化设置…

最宽温度范围文本格式PT1000分度表-200~850度及PT1000铂电阻温度传感器计算公式

常用PT铂电阻温度传感器 该图片来自网络&#xff0c;在此对图片作者表示感谢。 白色陶瓷面为测温面。 近距离图片。 常用的有PT100、PT500、PT1000&#xff0c;不常用的还有 PT50、PT200、PT10000等&#xff0c;PT代表铂电阻&#xff0c;后面的数字是零摄氏度时电阻值&#…

机器学习算法-sklearn源起

scikit-learn&#xff08;简称 sklearn&#xff09;是 Python 中最流行的开源机器学习库之一&#xff0c;基于 NumPy、SciPy 和 Matplotlib 构建。它提供了丰富的机器学习算法和工具&#xff0c;适用于数据挖掘和数据分析任务。以下是其核心特点的简介&#xff1a; 1、sklearn主…

注册并创建一个微信小程序

目录 &#xff08;一&#xff09;前往微信公众平台&#xff0c;并注册一个微信小程序账号 &#xff08;二&#xff09;配置微信小程序 &#xff08;三&#xff09;创建微信小程序项目 1.流程 1.1获取小程序ID 1.2下载微信开发者工具 1.3安装微信开发者工具 2.创建项目…

计算机网络——每一层的用到的设备及其作用

计算机网络基础 OSI参考模型TCP/IP协议族集线器&#xff08;Hub&#xff09;交换机&#xff08;Switch&#xff09;路由器&#xff08;Router&#xff09;功能特点无线路由器&#xff08;家庭宽带&#xff09;光猫功能 网关&#xff08;Gateway&#xff09;功能应用场景特点 IP…

【Web前端】JavaScript入门与基础(一)

JavaScript简介 JavaScript 是一种轻量级的脚本语言。所谓“脚本语言”&#xff0c;指的是它不具备开发操作系统的能力&#xff0c;而是只用来编写控制其他大型应用程序的“脚本”。 JavaScript 是一种嵌入式&#xff08;embedded&#xff09;语言。它本身提供的核心语法不算…

前端大文件上传性能优化实战:分片上传分析与实战

前端文件分片是大文件上传场景中的重要优化手段&#xff0c;其必要性和优势主要体现在以下几个方面&#xff1a; 一、必要性分析 1. 突破浏览器/服务器限制 浏览器限制&#xff1a;部分浏览器对单次上传文件大小有限制&#xff08;如早期IE限制4GB&#xff09; 服务器限制&a…

Linux服务器配置深度学习环境(Pytorch+Anaconda极简版)

前言&#xff1a; 最近做横向需要使用实验室服务器跑模型&#xff0c;之前用师兄的账号登录服务器跑yolo&#xff0c;3张3090一轮14秒&#xff0c;我本地一张4080laptop要40秒&#xff0c;效率还是快很多&#xff0c;&#xff08;这么算一张4080桌面版居然算力能比肩3090&#…

超低延迟音视频直播技术的未来发展与创新

引言 音视频直播技术正在深刻改变着我们的生活和工作方式&#xff0c;尤其是在教育、医疗、安防、娱乐等行业。无论是全球性的体育赛事、远程医疗、在线教育&#xff0c;还是智慧安防、智能家居等应用场景&#xff0c;都离不开音视频技术的支持。为了应对越来越高的需求&#x…

Java 内存模型(JMM)深度解析:理解多线程内存可见性问题

Java 内存模型&#xff08;JMM&#xff09;深度解析&#xff1a;理解多线程内存可见性问题 在 Java 编程中&#xff0c;多线程的运用能够显著提升程序的执行效率&#xff0c;但与此同时&#xff0c;多线程环境下的一些问题也逐渐凸显。其中&#xff0c;内存可见性问题是一个关…