`
loln23loln
  • 浏览: 12974 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

TIFF文件格式漏洞分析

 
阅读更多

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*.?..
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics