news 2026/5/8 16:15:15

pikachu靶场教学之文件上传

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
pikachu靶场教学之文件上传

1.client check

第一步:上传正常文件

上传本地正常图片文件

这里提示上传成功,并且访问链接成功获取图片

第二步:上传木马脚本

选择上传wen.php,该文件中包含一句话木马

这里出现弹窗,说明是前端校验,不能上传php

以防万一,我们抓包一下,看看有没有经过后端,这里上传后,页面弹窗,但是未拦截到数据包

说明的确只是前端校验

第三步:尝试前端修改属性

F12调试页面,鼠标放在 选择文件 上,发现下方元素处有响应前端代码

并在input标签中发现有一个属性 οnchange="checkFileExt(this.value)"

猜测该属性就是校验上传的文件的属性

这里直接将这个属性删除

再次尝试上传木马文件,依旧是有弹窗

第四步:抓包修改参数

再次分析上传文件流程,发现,正常文件,选择后可以回到正常界面,并在选择文件按钮后显示文件名字,但是上传木马文件的时候,没有返回正常界面,而是直接弹窗。而且修改前端参数没有用。

所以这次尝试上传正常文件,然后抓包修改参数

1.传正常文件并抓包

上传png格式图片文件,开启拦截,抓包成功,并右键发送至重放器中

2.修改参数

尝试将文件后缀改成php并在图片文件内容下方插入一句话木马,点击发送

使用蚁剑去连接,输入密码cmd,测试成功连接

2.MIME type

基础知识

MIME Type(全称 Multipurpose Internet Mail Extensions Type),中文叫多用途互联网邮件扩展类型,日常就叫资源类型 / 文件类型标识

简单说:就是给文件、网络资源打一个标准格式标签,告诉浏览器 / 服务器 / 程序:这是什么类型的数据,该怎么打开、怎么解析

  • text/plain:纯文本
  • text/html:网页 HTML
  • application/json:JSON 接口数据
  • image/png/image/jpeg:png、jpg 图片
  • application/pdf:PDF 文档
  • video/mp4:mp4 视频
  1. 浏览器收到接口返回数据,靠 MIME Type 分辨是网页、图片、JSON 还是下载文件
  2. 后端接口设置响应头Content-Type就是指定 MIME Type
  3. 上传文件、校验文件类型,后台经常判断 MIME Type 防伪装

MIME Type 就是互联网通用的文件 / 数据格式身份证

第一步:上传正常文件

上传本地正常图片文件

这里提示上传成功,并且访问链接成功获取图片

第二步:上传木马脚本

选择上传wen.php,该文件中包含一句话木马

这里未出现弹窗,能正常返回页面,接下来点击开始上传

提示图片只能是这三个格式的,应该是白名单过滤

这里上传随意后缀的文件,发现这里提示还是只能是这三种

说明这里不是只禁止php后缀的文件

第三步:抓包修改参数

1.传脚本文件并抓包

上传php文件,开启拦截,抓包成功,并右键发送至重放器中

2.修改参数

修改内容类型为image/png,点击发送

使用蚁剑连接,密码为wen,测试成功连接

3.getimagesize

第一步:上传正常文件

上传本地正常图片文件

这里提示上传成功,并且访问链接成功获取图片

第二步:上传木马脚本

提示文件只能是这三个格式的,应该是白名单过滤

第三步:抓包修改参数

1.传脚本文件并抓包

上传php文件,开启拦截,抓包成功,并右键发送至重放器中

2.修改参数

修改内容类型为image/png,点击发送

这里发现,提示仍然是没有上传成功

这里尝试,修改为png后缀格式的文件,发现这里提示,上传的是假图片

第四步:使用图片码

getimagesize()知识普及

getimagesize()不看文件后缀,也不看 Content-Type

它只看文件内部的真实数据(文件头 / 魔数)。

比判断后缀和 Content-Type 安全 100 倍。

它做这 3 件事:

  1. 打开文件,读取文件开头几个字节
  2. 对比图片格式的固定魔数(比如 PNG 开头固定是89 50 4E 47
  3. 解析宽高、格式,返回数组;不是图片就返回false

它完全无视:

  • 文件名:a.php/a.jpg/a.png不看
  • 请求头Content-Type: image/png完全不看
  • 文件后缀 →不看

图片码知识普及

图片马 = 伪装成图片的一句话木马外表是图片

里面藏 PHP/ASP/JSP 后门代码,专门用来绕过文件上传检测。

1.手动制造图片码

在木马文件的内容上面加上GIF89a,检测的时候就会检测出来是图片文件

GIF 图片的固定文件头,合法 GIF 文件前 5 个字节就是:GIF89a

这是行业标准,所有 GIF 图片都以这串开头。

2.cmd命令制造图片码

在相应文件夹下,在路径框中输入cmd,输入如下图命令

上传时需要将png后缀改回来成php,不然无法解析木马

但是改回来后,他又无法上传

这里采用文件包含漏洞的方式进行利用

第五步:利用文件包含漏洞

这里我们可以使用第一题中上传的木马,使用蚁剑连接后,直接查看路径

也可以通过第一题获得phpinfo文件:上传文件后,在木马路径下,输入cmd=phpinfo();,会进行将代码传入后台执行,获得phpinfo文件

这里采用第二种方式

成功找到文件路径,并利用文件包含漏洞,成功触发该脚本

这里使用蚁剑连接,输入密码cmd,成功连接

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/8 16:14:55

别再复制粘贴了!RT-Thread SConscript与Kconfig文件编写核心语法详解

RT-Thread构建系统深度解析:从SConscript到Kconfig的工程实践 在嵌入式开发领域,RT-Thread以其模块化设计和丰富的组件生态脱颖而出。但真正让这个操作系统与众不同的是它精心设计的构建系统——一套融合了SCons构建工具和Kconfig配置机制的双引擎架构。…

作者头像 李华
网站建设 2026/5/8 16:14:15

网络连接优化方案:从架构设计到部署实践的完整指南

1. 项目概述与核心价值在当前的网络环境下,无论是个人用户还是企业团队,对于网络连接的稳定性、速度以及数据安全性的需求都达到了前所未有的高度。一个可靠、高效的网络连接工具,已经不再是可有可无的选项,而是保障日常工作、学习…

作者头像 李华
网站建设 2026/5/8 16:14:00

基于T3 Stack构建Cursor AI规则库:提升开发者效率的实践指南

1. 项目概述:一个为开发者量身定制的Cursor规则库如果你和我一样,是一名日常与代码为伴的开发者,那么过去一年里,你一定无法忽视一个名字:Cursor。它不仅仅是一个编辑器,更像是一个坐在你身边的、不知疲倦的…

作者头像 李华