图片隐写
0x1常见隐写类型:
【以下题目多来源于各大ctf题库或网站,仅修改了文件名以便于讲解】
1.利用binwalk工具分离图片
2.stegsovle工具的利用
3.txt简单隐写
4.关键字搜索
5.十六进制文件头补全及修改
6.png格式IHDR的问题
7.属性隐写+文件类型
![](http://n4.ikafan.com/assetsj/blank.gif)
0x2常用工具:
1.kali虚拟机【binwalk、foremost】
2.十六进制编辑器【Winhex或Hexedit】
3.记事本或其他文本编辑器
4.stegsovle【基于java运行,需配置java环境】
1x0题目详解:
1x1利用binwalk工具分离图片:
1.首先将文件放到kali下,利用binwalk命令查看图片,通过查看描述可以发现图片中还隐藏了另外一张图片。
2.接着利用binwalk -e或foremost命令来分离他们。
![](http://n4.ikafan.com/assetsj/blank.gif)
![](http://n4.ikafan.com/assetsj/blank.gif)
![](http://n4.ikafan.com/assetsj/blank.gif)
3.在生成的目录中,我们可以发现被隐藏的图片,从而得到flag。
1x2stegsolve工具的利用:
1.首先打开stegsolve,并open题目图片
![](http://n4.ikafan.com/assetsj/blank.gif)
2.通过点击左右箭头,来查看图片在其它文件格式下的图像,然后在Gray bits格式下,发现一张隐藏的二维码,扫描二维码即可得到flag
3.在其它格式下也可能会有提示信息,例如这张图
![](http://n4.ikafan.com/assetsj/blank.gif)
4.在Green plane0格式下直接发现了flag
![](http://n4.ikafan.com/assetsj/blank.gif)
1x3 txt简单隐写
【此类题目可以说是最简单的一类题,通过直接使用记事本或者其它文本编辑软件,可直接查看。一般拿到图片后,大多先用记事本查看,从而判断是否为txt简单隐写。一般flag会位于文本开头或结尾,少数情况会在文本中间,这类情况后面会单独介绍】
1.拿到图片后,直接用记事本打开,在文本结尾发现了一串编码,学习过密码学的人应该很容易认出这是Unicode加密。我在之前的帖子里,也介绍过这种编码方式【https://blog.csdn.net/Dog_Captain/article/details/82690338】
![](http://n4.ikafan.com/assetsj/blank.gif)
2.利用解码器可直接解flag
![](http://n4.ikafan.com/assetsj/blank.gif)
1x4 关键字搜索
【这类题目与txt简单隐写类似,但flag大多隐藏在文本中间,当文本过长的时候,只靠肉眼查找会浪费很多时间,我们可以直接用ctrl+f搜索关键字,例如:flag、FLAG、key、KEY或根据赛方要求的格式进行查找】
![](http://n4.ikafan.com/assetsj/blank.gif)
1x5 十六进制文件头补全及修改
【首先,我们需要知道文件头是位于文件开头,用处承担一定任务的数据,我们可以通过文件头来判断文件类型。因此,当文件头被删除或修改后,文件可能会打不开,这种情况我们就要根据所给文件的后缀,补全或修改文件头】
1.先观察所给的文件类型,发现是jpg格式,我们就要想到jpg文件的文件头为FFD8FF
![](http://n4.ikafan.com/assetsj/blank.gif)
2.利用Winhex打开图片,查看文件的十六进制,观察后我们会发现,相比于正常的jpg文件,这张图的文件头缺失了三位
![](http://n4.ikafan.com/assetsj/blank.gif)
3.将文件头补全后保存,系统会自动生成一个备份文件,防止修改错误,而原文件则会变为正常图片
![](http://n4.ikafan.com/assetsj/blank.gif)
![](http://n4.ikafan.com/assetsj/blank.gif)
4.文件头修改同理,观察文件头前几位,将其修改为正确格式,保存后即可得到正常图片
![](http://n4.ikafan.com/assetsj/blank.gif)
1x6 png格式的IHDR问题
【这类题目最大的标志:图片格式为png,或当你感觉这张图片好像被裁掉一部分时,要考虑的这类问题。这类题目的原理我理解的并不是很深刻,仅仅局限于解题方法...】
1.先查看一下原图
![](http://n4.ikafan.com/assetsj/blank.gif)
2.用十六进制编辑器打开图片后,我们会发现他的标志IHDR,对应左边十六进制的49 48 44 52,我们以此为界,后面的四位为图片宽度,再向后四位为图片高度
![](http://n4.ikafan.com/assetsj/blank.gif)
2.接下来,我们根据实际情况,将宽度和高度改为相同数值,然后保存
![](http://n4.ikafan.com/assetsj/blank.gif)
3.再次查看图片,发现隐藏的flag
![](http://n4.ikafan.com/assetsj/blank.gif)
1x7 属性隐写+文件格式
详情请见我写过的题目解析
图片隐写1:chal.png,图片如下:
![](http://n4.ikafan.com/assetsj/blank.gif)
题目图片即为一张白板,用Stegsolve.jar工具打开,向右疯狂点箭头得到flag:
![](http://n4.ikafan.com/assetsj/blank.gif)
题目2:Here.png:
![](http://n4.ikafan.com/assetsj/blank.gif)
直接拖到kali里用binwalk -e Here.png得到释放出的文件夹中有flag.txt,打开即得到flag。
![](http://n4.ikafan.com/assetsj/blank.gif)
题目3:flag.png:
![](http://n4.ikafan.com/assetsj/blank.gif)
这个是LSB隐写:
首先用Stegsolve.jar打开
![](http://n4.ikafan.com/assetsj/blank.gif)
analyse->data extract->
![](http://n4.ikafan.com/assetsj/blank.gif)
分别选中red,green,blue的最低0位,然后右侧选中LSB First,然后Save Bin
![](http://n4.ikafan.com/assetsj/blank.gif)
保存得到aaa文件,将aaa文件拖入kali中binwalk之
![](http://n4.ikafan.com/assetsj/blank.gif)
得到释放后的_aaa.extracted进入看到:
![](http://n4.ikafan.com/assetsj/blank.gif)
有一个1文件,利用chmod a+x 1 改变文件1位可执行并执行得到flag
![](http://n4.ikafan.com/assetsj/blank.gif)
由上可得flag。
lsb隐写,一般都藏在0,1,2这些低位里面,在软件功能选项中查看Analyse→Data Extract,逐个调试。
题目4:图片拉长:
![](http://n4.ikafan.com/assetsj/blank.gif)
![](http://n4.ikafan.com/assetsj/blank.gif)
![](http://n4.ikafan.com/assetsj/blank.gif)
![](http://n4.ikafan.com/assetsj/blank.gif)
图片属性,查看图片像素
![](http://n4.ikafan.com/assetsj/blank.gif)
高为0477,利用calc.exe命令调出计算器,换算成十六进制为01DD。利用打开图片搜索十六进制01DD
![](http://n4.ikafan.com/assetsj/blank.gif)
找到后改为02DD拉长(对于png文件,其第二行第六列是高度位,改这一位即可)
![](http://n4.ikafan.com/assetsj/blank.gif)
保存可以看到flag
![](http://n4.ikafan.com/assetsj/blank.gif)
记住改第2行,第6列。
题目5:图片逆转:1.reverseMe:
下载下来的文件用winhex查看一下发现头部D9FF很眼熟啊,想起来和JPEG文件格式的尾部FFD9正好反过来而且题目是reverseMe,赶紧去看看尾部D8FF正好是JPEG文件头倒过来,编写脚本:
#!usr/bin/python
f = open('C:\\jiaoben\\tttt.jpg','wb')
g = open('C:\\jiaoben\\1.reverseMe','rb')
f.write(''.join(g.read()[::-1]))
g.close()
f.close()
注意文件存放的目录,运行完成后生成tttt.jpg
![](//n4.ikafan.com/assetsj/blank.gif)
利用mspaint windows自带的画图工具水平翻转即可:
![](//n4.ikafan.com/assetsj/blank.gif)
最后把题目和工具上传。