- 浏览: 12974 次
最新评论
TIFF文件格式漏洞分析
2010年07月10日
TIFF(TagImageFileformat)是Mac中广泛使用的图像格式,它由Aldus和微软联合开发,最初是出于跨平台存储扫描图像的需要而设计的。它的特点是图像格式复杂、存贮信息多。正因为它存储的图像细微层次的信息非常多,图像的质量也得以提高,故而非常有利于原稿的复制。该格式有压缩和非压缩二种形式,其中压缩可采用LZW无损压缩方案存储。不过,由于TIFF格式结构较为复杂,兼容性较差,因此有时你的软件可能不能正确识别TIFF文件(现在绝大部分软件都已解决了这个问题)。目前在Mac和PC机上移植TIFF文件也十分便捷,因而TIFF现在也是微机上使用最广泛的图像文件格式之一。
要分析这个漏洞,一定要能够重现这个漏洞,然后通过跟踪和调试来分析它。m大神发布的漏洞我分析了一下,有两种利用方式,,一个是直接在目录下就溢出,也就是说当你用psp打开了畸形tiff文件所在的目录时,漏洞就已经使寄存器溢出了;另一个是可以用来做自制程序,也就是说,当你打开了畸形tiff文件,那个就会在你本地发生寄存器栈溢出,从而执行任意代码,即shellocde。
理解了如何利用,现在我们的关键就是需要掌握一些tiff图像文件格式规范,不需要很专业的掌握,只要对这种文件格式的基础知识有所了解就足够我们分析漏洞了。下面我来描述一下文件的基本规范,考虑到看英文比较难受的朋友,我特意翻译了一把,希望对大家有所帮助。需要英文原文的朋友也可以从本文的光盘相关中得到。
一个完整的tiff文件首先有8字节的头部(header),头部中含有一个指针指向一个图像文件目录,简称IFD(image file directory),每个IFD包含了重要的图像信息,这些信息是一条一条的存储在IFD中的,称为目录条目,简称DE(directory entry)。具体的说,可以用下面这个图示来说明他们之间的逻辑关系。
首部Header
字节0-1:字节序
“II”(4949.H)――小印第安,低字节存储在内存的低地址
“MM”(4D4D.H)――大印第安,低字节存储在内存的高地址
字节2-3:TIFF文件标识
最好选用42(十进制),同时要看前面的字节序,如果是小印第安,这里就写2A00.H;否则写002A.H
字节4-7:第一个图像文件目录(IFD)在文件中的偏移量(offset)
 图像文件目录(IFD)
每一个图像文件目录(IFD)中首先有两个字节表示目录条目(DE)的个数,接着的连续的每12个字节是一个目录条目,每个IFD最后4个字节表示的是下一个IFD的偏移量,如果没有后继IFD的话用一个4字节数字0来结尾。
 目录条目(DE)
每一个12字节的DE拥有同样的结构:
字节0-1:本域的标记(Tag)
字节2-3:本域类型(Type)
字节4-7:值的个数
字节8-11:具体的值,或者是一串多个值存储于文件的偏移量
其中类型有多种,最常见的有一下几种:
1=BYTE 8位无符号整数
2=ASCII 8位,其中前7位表示一个ASCII码;最后一位必须是NUL(二进制的0)
3=SHORT 16位无符号整数
4=LONG 32位无符号整数
5=RATIONAL 两个LONG,第一个表示分子;第二个表示分母
有了以上的基本文件格式规范知识后,我们就可以开始研究上面perl代码生成的ms07-055.tif文件了。首先我们来看看文件头部的8个字节,如下:
00000000h: 49 49 2A 00 90 3E 00 00 80 3F E0 50 38 24 16 0D ; II*.?..
发表评论
-
mmap学习笔记
2012-01-20 08:57 683mmap学习笔记 2010年12月10日 最近遇到个问题 ... -
Asio资料收集及使用点滴
2012-01-20 08:57 800Asio资料收集及使用点滴 2011年03月23日 As ... -
Asio资料收集及使用点滴
2012-01-20 08:57 714Asio资料收集及使用点滴 ... -
hibernate数据修改后不能及时更新
2012-01-20 08:57 801hibernate数据修改后不能 ... -
从solaris向linux移植应用程序的技术指导
2012-01-20 08:57 713从solaris向linux移植应用 ... -
ADO
2012-01-19 14:01 692ADO 2010年06月04日 ... -
JDK1.5 JDK1.6 各自的新特性
2012-01-19 14:01 521JDK1.5 JDK1.6 各自的新特 ... -
使用Cocos2d框架开发iPhone游戏的方法
2012-01-19 14:01 573使用Cocos2d框架开发iPhone游戏的方法 2011年 ... -
MonoTouch:用.net开发iPhone应用
2012-01-19 14:01 573MonoTouch:用.net开发iPhone ... -
什么是android模拟器?如何下载安装Android模拟器?
2012-01-19 14:01 554什么是android模拟器?如何下载安装Android模拟器? ... -
推荐一个适合菜鸟使用的小工具
2012-01-17 03:51 530推荐一个适合菜鸟使用的小工具 2011年03月24日 ... -
TOAD快速入门(中文经典)
2012-01-17 03:51 712TOAD快速入门(中文经典) ... -
ARM经典100问
2012-01-17 03:51 614ARM经典100问 2011年03月13日 第1章 体系 ... -
STP-2保温板
2012-01-16 02:37 767STP-2保温板 2012年01月04 ... -
High compaction molding【清华大学:于震宗】
2012-01-16 02:37 651High compaction molding【清 ... -
汽车修理工中级理论复习资料
2012-01-16 02:37 814汽车修理工中级理论复习资料 2011年11月28日 汽车 ... -
计算机网络1(习题答案)
2012-01-16 02:36 819计算机网络1(习题答案) ...
相关推荐
geotiff格式的说明文档,此格式为pdf,官网只能找到网页版的
TIFF数据格式实例分析 博客:https://blog.csdn.net/u010476739/article/details/98640034
VC++解析TIFF\TIF格式类型文件所需库, VC++解析TIFF\TIF格式类型文件所需库
本程序可通过VS2010实现打开TIFF及TIF格式文件,内含详细实现代码及用到的TIFF库
TIFF文件合并:将散页TIFF文件合并成一个多页TIFF,同时支持将JPG、BMP、PNG、GIF...查看TIFF文件结构:如果打算对TIFF文件内部格式进行研究,这个功能那是相当地有用,不然还是点“显示设置”按钮,把它藏起来算了。
程序完成adf格式文件转成TIFF格式文件。
winForm程序选择tiff文件后,对tiff文件进行拆分,将拆分后的矩阵展示在窗口中,可以拆分多个tiff文件展示在窗口,点击合并后,将所有展示的图片合并成新的tiff文件并输出到本地
有了这个 就可以用最基本的fopen fwrite读写Tiff了。
将CMYKBO (CMYK+N通道的数据) 写入 TIFF文件 ,注意点:(后面的通道 记得取反 否则出错) 可以通过 PS的分层来查看 写入结果的正确性
涵盖了tif格式文件的详细介绍,包括组成,Tag介绍,对于初次接触tif文件格式的朋友非常实用。
java读取tiff文件,并获得长,高。
数字切片格式转换svs>tiff格式,后续写出其他格式的文件相互转换
对图像文件的操作 ,主要功能有:多张图片合并成一个tiff文件、将tiff文件的拆分成多张图片以及多个tiff文件合并成一个tiff文件
ENVI+IDL5.3 在IDL中进行栅格运算后,应用raster.Export, outname, ‘tiff’.直接将影像输出,会丢失投影等...以下代码用于解决在IDL中运算生成的dat文件批量转换成带有地理信息的tiff文件格式。 (前提是,dat文件的h
地理信息系统和遥感影像的处理和应用过程中,栅格影像都包含有各种地理信息,而一般的 ...简单介绍了1rIFF图像文件结构以及对地理数据的存储方式,文最后介绍了实现GeoTIFF图像文件的读写的关键步骤
读取Tiff文件中CMYK色彩模式存储的图像数据,并转换为RGB色彩模式
XP下预览TIFF文件预览插件,一般都是美工用的啦,其他职业很少用到吧
该程序提供了一个简要的TIF文件格式处理接口,虽然不是很全面,但是可以使用,希望对大家有一定的帮助。
基于netcdfAll-4.2.jar 读取气象科学数据(.nc格式)文件,解析数据内容后,通过GDAL解析生成tiff文件,tiff文件的灰度值就是对于气象科学数据的监测值,基于tiff数据,结合gis软件,可以生产在b/s浏览的地图图层,...
TIFF图文件格式详解