CTF中图⽚隐藏⽂件分离⽅法总结
0x00 前⾔
在安全的⼤趋势下,信息安全越来越来受到国家和企业的重视,所以CTF⽐赛场次越来越多,⽽且⽐赛形式也不断的创新,题⽬也更加新颖有趣,对选⼿的综合信息安全能⼒有⼀个较好的考验,当然更好的是能从⽐赛有所收获,不断学习和总结提升⾃⼰的信息安全能⼒与技术。转到CTF⽐赛上,通常在CTF⽐赛中常有与隐写术(Steganography)相关的题⽬出现,这⾥我们讨论总结图⽚隐藏⽂件分离的⽅法,欢迎⼤家补充和交流:P
0x01 分析
这⾥我们以图⽚为载体,给了这样的⼀样图⽚:
⾸先我们需要对图⽚进⾏分析,这⾥我们需要⽤到⼀个⼯具,想要了解这个⼯具可以参考这篇⽂章,以及。
大樟树这⾥我们就是最简单的利⽤,在binwalk后直接提供固件⽂件路径和⽂件名即可:
# binwalk carter.jpg
当我们使⽤这⾏命令后,binwalk就会⾃动分析这个jpg⽂件:
# binwalk carter.jpg
DECIMAL HEXADECIMAL DESCRIPTION
--------------------------------------------------------------------------------关于劳动节的名人名言
00x0JPEG image data, JFIF standard 1.01
3820x17E Copyright string: "Copyright (c) 1998 Hewlett-Packard Company"
31920xC78TIFF image data, big-endian, offset of first image directory: 8
1401470x22373JPEG image data, JFIF standard 1.01
小学中秋节的古诗30首1401770x22391TIFF image data, big-endian, offset of first image directory: 8
从上⾯的内容显然看得出来这个jpg⽂件还隐藏着另⼀个jpg⽂件,从140147块偏移开始就是另⼀张jpg。
0x02 分离
在得到隐藏信息之后我们下⼀步就是把另⼀张jpg分离出,以下讨论⼏种⽅法:
(1)使⽤dd命令分离(linux/unix下)
我们可以使⽤dd命令分离出隐藏⽂件:
# dd if=carter.jpg of=carter-1.jpg skip=140147 bs=1
可以参考,这⾥if是指定输⼊⽂件,of是指定输出⽂件,skip是指定从输⼊⽂件开头跳过140147个块后再开始复制,bs设置每次读写块的⼤⼩为1字节。
最后我们可以得到这样的⼀张carter-1.jpg图⽚:
(2)使⽤foremost⼯具分离
foremost是⼀个基于⽂件⽂件头和尾部信息以及⽂件的内建数据结构恢复⽂件的命令⾏⼯具,win可以下载地址,Linux可以
通过下⾯命令安装使⽤:教师节板报设计图
# apt-get install foremost
安装foremost后你可以使⽤foremost -help查看使⽤帮助,这⾥最简单分离⽂件的命令为:
# foremost carter.jpg国际名牌包包
当我们使⽤这⾏命令后,foremost会⾃动⽣成output⽬录存放分离出⽂件:
中国药品价格查询
(3)hex编辑器分析⽂件
⾄于hex编辑器有很多,win下有⽤得较多的winhex,UltraEdit等,linux下有hexeditor等,这⾥我们以winhex为例⼿动分离,在分离之前我们需要知道⼀点关于jpg⽂件格式的知识,jpg格式⽂件开始的2字节是图像开始SOI(Start of Image,SOI)为FF D8,之后2个字节是JFIF应⽤数据块APPO(JFIF application segment)为FF E0 ,最后2个字节是图像⽂件结束标记EOI(end-of-file)为FF D9 ,如果你想详细了解更多关于这⽅⾯的知识可以参考jpg⽂件格式分析⼀⽂。
⽤winhex打开图⽚,通过Alt+G快捷键输⼊偏移地址22373跳转到另⼀张jpg的图像开始块,可以看到F
F D8图像开始块。
⽽图像结束块FF D9
选取使⽤Alt+1快捷键选取FF为开始的块,Alt+2选取D9为结束块,然后右键->Edit->Copy Block->Into New File保存相应的⽂件后缀,例如new.jpg
0x03 其他
还有⼀种特例,它是事先制作⼀个hide.zip,⾥⾯放⼊隐藏的⽂件,再需要⼀张jpg图⽚example.jpg,然后再通过命令 copy /b example.jpg+hide.zip output.jpg⽣成output.jpg的新⽂件,原理是利⽤了copy命令,将两个⽂件以⼆进制⽅式连接起来,正常的jpg⽂件结束标志是FF D9,⽽图⽚查看器会忽视jpg结束符之后的内容,所以我们附加的hide.zip就不会影响到图像的正常显⽰。(参考AppLeU0的 )
针对这种特例我们可以直接将jpg⽂件改为zip⽂件后缀(其他⽂件如rar⽂件也类似),就可以看到hide.zip压缩包⾥隐藏的⽂件。
⽐如当我们得到⼀张wh3r3_is_f14g.jpg⽂件:
当我们⽤winhex打开⽂件,发现wh3r3_is_f14g.jpg⽂件最后数据块不是FF D9 jpg⽂件的结束标志,⽽是zip⽂件的结束标志。
我们直接将⽂件改名为wh3r3_is_f14g.zip,打开得到。
最后打开得到flag。
0x03 后话
图⽚隐写⽅式有很多种,在此只介绍了这⼀种,如果以后有机会会写其他的图⽚隐写,如果对隐写感兴趣这⾥推荐⼀本机械⼯业出版社的《数据隐藏技术揭秘:破解多媒体、操作系统、移动设备和⽹络协议中的隐秘数据》,如果你不想购买实体书,可以。
这⾥我把所有图⽚打包了zip,如果有需要⾃⾏下载吧: P
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论