欢迎来到 嗅灵易学

零基础也能上手的脚本技术课,一对一答疑带你入门

软件安全测试(fuzz)之大家一起学2:认识PNG文件格式

软件安全测试(fuzz)之大家一起学2:认识PNG文件格式

软件安全测试(fuzz)之大家一起学2:认识PNG文件格式
首先想和大家一起讨论的,是filefuzz。在我们开始继续深入Peach的数据定义之前,我决定先独立于peach,用一点篇幅介绍下文件格式。
学习file fuzz就要非常清楚要测试的文件格式。我们以PNG (Portable Network Graphics)为例,在附件中我给出了PNG图片文件格式的详细参考文档。
PNG文件格式 PNG_format.zip
除了附件中的参考之外,在http://www.libpng.org/pub/png/能找到更多关于PNG的资源。
简单的总结一下文档中关于PNG文件格式的描述。
 

如上图:PNG文件可以简单的理解成一个文件头和一系列数据块,具体说来:
文件头:由八个字节组成,0x89504e470d0a1a0a
数据块:每个数据块由四部分构成,他们的描述依次如下:
Length :占四字节,表示数据块data域占多少个字节。(注意这里不包括length自身)
Type :占四字节,表示当前块的类型。一般是英文大小写字母的ASCII码(65~90或者97~122)
Data:数据区。大小可以是0字节
CRC:占四个字节,整个chunk的CRC校验码(Length+Type+Data) 
下面我们打开一个PNG文件一起对照着文件格式在二进制编辑器中更加直观的来学习一下。这里我介绍一个解析文件结构很牛X的二进制编辑器010editor给大家。
可以去http://www.sweetscape.com/010editor/下载到。
上面这个PNG文件格式的示意图就是一个PNG格式的图片,这里就以它为例了,将其另存在本地文件PNG_chunk.png。
安装好010editor,用010editor打开PNG_chunk.png
 

如上图,界面看起来和Ultraedit也差不了多少,大家应该比较熟悉。
我们主要想用010editor的二进制文件模板,套用这些文件格式解析脚本,可以更容易更直观的搞清楚文件格式。
注意上图红色标出的几个模板按钮,打开下拉框,默认安装010editor只能识别出bmp,zip,wav这三种文件。为了能够识别PNG文件,我们需要去http://www.sweetscape.com/010editor/templates/下载额外的文件模板。
下载需要的模板,我们这次至少需要PNG12Template.bt模板。
按ctr+F5或者点第二个模板按钮,打开刚下载的PNG12Template.bt模板。
按F5或者点击第四个模板按钮,套用PNG文件模板。
 
如上图,运行成功后,可以看到010editor解析出了若干个chunk,并且能够用不同颜色标注出你所选中的某一个chunk的某一个字段。
这些工具和知识会为后面调试peach的数据定义带来很多帮助。
下一讲我们就一起来用peach定义这样一个PNG文件。
最后,小声说一下,《0day安全:软件漏洞分析技术》第二次印刷刚结束。第二次印刷总共勘误了50余处,包括了大家反映的插图不清,一个重要示意图的重复,若干出地址和指针的标注,以及错别字等等。感谢0day版朋友的勘误,书籍质量的提高离不开你们的支持(最后一句话是大声说的)。

注意:上传附件及图片大小不得大于30M。

⚠️ 版权声明:
本博客所有内容(含教程、源码、工具)仅供个人技术学习与研究交流使用,严禁商用、倒卖、二次分发及非法用途
未经作者书面授权,任何组织或个人不得转载、复制或用于其他平台,违者将追究相关责任。

0 0 0 举报
复制成功