首页
社区
课程
招聘
[技术专题]软件安全测试(fuzz)之大家一起学2:认识PNG文件格式
2008-10-23 12:35 12671

[技术专题]软件安全测试(fuzz)之大家一起学2:认识PNG文件格式

2008-10-23 12:35
12671
软件安全测试(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版朋友的勘误,书籍质量的提高离不开你们的支持(最后一句话是大声说的)。

[CTF入门培训]顶尖高校博士及硕士团队亲授《30小时教你玩转CTF》,视频+靶场+题目!助力进入CTF世界

上传的附件:
收藏
点赞7
打赏
分享
最新回复 (24)
雪    币: 233
活跃值: (15)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
glery 2 2008-10-23 13:04
2
0
sf,学习......
雪    币: 398
活跃值: (343)
能力值: (RANK:650 )
在线值:
发帖
回帖
粉丝
shoooo 16 2008-10-23 13:16
3
0
010很强大
雪    币: 337
活跃值: (1510)
能力值: ( LV13,RANK:970 )
在线值:
发帖
回帖
粉丝
nbw 24 2008-10-23 13:20
4
0
学习PNG,回头再介绍一下PNG的压缩变种
雪    币: 2056
活跃值: (13)
能力值: ( LV13,RANK:250 )
在线值:
发帖
回帖
粉丝
vxasm 6 2008-10-23 13:32
5
0
继续学习。

我又孤陋了,这么牛X的编辑器还第一次听说,感谢failwest!去下载个先。
雪    币: 111
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
Aleaxander 1 2008-10-23 14:17
6
0
见世面了,呵呵
雪    币: 111
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
Aleaxander 1 2008-10-23 14:45
7
0
Length :占四字节,表示数据块data域占多少个字节。(注意这里不包括length自身

为什么这里还得注上:注意这里不包括length自身?
data区并是一个并没包括length啊
一开始我还以为是除了length之外的字节数呢,呵呵
雪    币: 62
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
mmnihao 2008-10-23 15:02
8
0
嗯, 学习了
雪    币: 221
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
nop 2008-10-23 15:14
9
0
010editor不错,以前一直用hachoir来搞,学习了.
雪    币: 295
活跃值: (11)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
findlakes 1 2008-10-23 15:51
10
0
楼主  还要写书吗??什么时候再出版啊  记得在论坛里给大家通知下啊
雪    币: 2056
活跃值: (13)
能力值: ( LV13,RANK:250 )
在线值:
发帖
回帖
粉丝
vxasm 6 2008-10-23 15:55
11
0
又见大牛现身了,mark一下。  hachoir貌似没有Win平台的。
雪    币: 242
活跃值: (418)
能力值: ( LV11,RANK:188 )
在线值:
发帖
回帖
粉丝
XPoy 3 2008-10-23 16:42
12
0
补充
记得大部分hex编辑器都可以套用结构的。
例如hex wordshop的
工具->结构查看器->
雪    币: 333
活跃值: (11)
能力值: ( LV12,RANK:770 )
在线值:
发帖
回帖
粉丝
jdxyw 19 2008-10-25 22:53
13
0
下载了PNG12Template.bt来用,run的时候出错,是不是这个template出错还是有什么问题?
雪    币: 107
活跃值: (311)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
Fido 2008-10-26 12:38
14
0
学习。。。。收藏了一个。。。等汉化和Crack
雪    币: 6561
活跃值: (2994)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
asd 2008-10-26 13:12
15
0
这些研究的人很多,搞科普的少
雪    币: 100
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
鸟鸟 2008-10-26 17:49
16
0
学习.谢谢楼主分享
雪    币: 141
活跃值: (1125)
能力值: ( LV2,RANK:150 )
在线值:
发帖
回帖
粉丝
mavermaver 3 2008-10-26 18:07
17
0
感觉还是.chm文件看起来爽,所以就整了一个。

PNG_format_chm.rar
上传的附件:
雪    币: 203
活跃值: (17)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
wangcl 2008-10-26 19:08
18
0
努力学习,收藏
雪    币: 169
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
zhendeaini 2008-10-27 00:58
19
0
搂主真厉害哟!
雪    币: 163
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
mocha 2008-10-30 13:22
20
0
发个 010 Editor v3的序列号

pediy

B25693AC179D17FF0F0D
雪    币: 34
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
jordanpz 2008-11-24 10:44
21
0
下一讲何时发布?难道只是为了卖书而使用的一个小技俩?
雪    币: 34
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
jordanpz 2008-11-26 19:06
22
0
严重期待中 
雪    币: 159
活跃值: (38)
能力值: ( LV9,RANK:140 )
在线值:
发帖
回帖
粉丝
xhK 3 2008-11-26 21:38
23
0
png不是图像文件格式,对于软件调试有用不?
雪    币: 154
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
tudiwangma 2013-7-1 11:56
24
0


0day安全都出到第二版了,fuzz专题仍然停留在第二篇,太可惜了!
上传的附件:
雪    币: 43
活跃值: (30)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
hbcld 2015-3-17 13:41
25
0
真好!!!!!!
游客
登录 | 注册 方可回帖
返回