[GHCTF 2025]UPUPUP【.htaccess绕过 XBM/WBMP】

news/2025/3/15 20:51:14/

 题目:

这种文件上传可以先尝试一下让他报错,发现是apache的服务器,就想到.htaccess

上传了 .htaccess 和 .jpg 都没啥用,这时候应该想到后端采用了getimagesize和exif_imagetype限制

在文件上传时,有时候会用 exif_imagetype 函数判断一个图像的类型,读取一个图像的第一个字节并检查其签名,所以我们图片马的开头要加上 GIF89a,但是如果我们在. htaccess 文件中也加入 GIF89a 的话会导致. htaccess 文件无法生效,所以我们要用别的方法。 

这时候有两种绕过方法:

第一种 

写入XBM绕过

XBM格式:

XBM格式,也就是X BitMap,是一种基于文本的图像格式(纯文本图像格式),用于存储黑白像素(没有颜色,只有0和1表示是否填充)。它的本质是一个C语言头文件(.h文件),内部用代码定义了一个二维数组,描述图像的每个像素点。

由于XBM是文本格式,可以写入.htaccess文件中,可以通过这个绕过exif_imagetype()

在.htaccess开头加上: 

#define width 1
#define height 1

#define 定义常量,规定了这个图像的长和宽都是多少  

其实完整的XBM长这样:

绕过原理:

PHP的 exif_imagetype() 函数通过读取文件头部的魔术字节(Magic Bytes)判断文件类型。这里XBM文件的头部是文本形式的 #define 语句,符合标准的XBM格式,因此会被识别为 IMAGETYPE_XBM(PHP常量值为 16)。

第二种 

WBMP文件格式,利用

\x00\x00\x8a\x39\x8a\x39

或者 

\x00\x00\x85\x85

放在开头,剩下的正常写


http://www.ppmy.cn/news/1579399.html

相关文章

linux ptrace 图文详解(二) PTRACE_TRACEME 跟踪程序

目录 一、基础介绍 二、PTRACE_TRACE 实现原理 三、代码实现 四、总结 (代码:linux 6.3.1,架构:arm64) One look is worth a thousand words. —— Tess Flanders 一、基础介绍 GDB(GNU Debugger&…

C#类型转换大总结

在 C# 中,类型转换是将数据从一种类型转换为另一种类型的过程,常见的转换方式包括隐式转换、显式转换、方法转换(如 Convert 类或 Parse/TryParse)以及自定义转换操作符。以下是详细的分类和示例: 隐式转换(Implicit Conversion) 无需显式声明,编译器自动完成,通常发生…

2025-3-12 leetcode刷题情况(贪心算法--区间问题)

一、452.用最少数量的箭引爆气球 1.题目描述 2.代码 3.思路 使用 Arrays.sort 方法对 points 数组按照气球的起始坐标进行排序。这里使用 Integer.compare(a[0], b[0]) 作为比较器,确保气球按起始坐标从小到大排列。将箭的数量 count 初始化为 1,因为至…

AWS Bedrock 正式接入 DeepSeek-R1 模型:安全托管的生成式 AI 解决方案

亚马逊云科技(AWS)于 2024 年 1 月 30 日 宣布,DeepSeek-R1 模型 正式通过 Amazon Bedrock 平台提供服务,用户可通过 Bedrock Marketplace 或自定义模型导入功能使用该模型。 DeepSeek-R1,其安全防护机制与全面的 AI 部…

wps word 正文部分段前段后间距调整无用

用了网上的方法,对我来说没用: https://zhidao.baidu.com/question/1894016349633589548.html 操作: 选中相关内容,菜单栏-开始 格式改为正文 调整段前段后间距

⭐LeetCode(数学分类) 48. 旋转图像——优美的数学法转圈(原地修改)⭐

⭐LeetCode(数学分类) 48. 旋转图像——优美的数学法转圈(原地修改)⭐ 示例 1: 输入:root [5,3,6,2,4,null,8,1,null,null,null,7,9] 输出:[1,null,2,null,3,null,4,null,5,null,6,null,7,null,8,null,9] 示例 2: 输入&#xff1…

抽象工厂模式的C++实现示例

核心思想 抽象工厂模式(Abstract Factory Pattern)是一种创建型设计模式,它提供了一种方式,可以创建一系列相关或依赖的对象,而无需指定它们的具体类。抽象工厂模式的核心思想是: 抽象工厂接口&#xff1a…

快速集成1688商品API:10分钟实现跨境选品数据自动化

要快速集成 1688 商品 API 以实现跨境选品数据自动化,可参考以下步骤: 注册并申请 API 权限:注册账号创建应用并申请所需的 API 权限,如商品搜索、筛选、获取详情等相关权限。获取 API Key 和 Secret:在应用管理页面获…