我每次做图片隐写都有一个固定的流程:
下载文件->拖进二进制工具->检查文件头和文件尾(如果有需要需要还原文件)->拖入stave查看通道->拖入binwalk检查是否有包含的文件->检查频率......(后面就是工具的使用)
本文末尾我会给出一些好用的图片分析网站,包含一些GIF还原,更强大的二维码识别等


89 50 4E 47 0D 0A 1A 0A
标准的png格式,那么我们就需要把exe改为png
这里出现了一个二维码,拿出手机扫一下就能获得flag


刚开始没看到文件头,我本来寻思是什么txt之类的文件直接改的,但又想到文件是完好的不太可能,回去翻了一下别人写的wp,这里原来是文件数据倒转
可以看到文件末尾GNP,倒过来不就是PNG嘛,这里要还原的话需要写个小脚本:
pythona = open('flag.jpg','rb') #读取flag.jpg图片的byte数据
b = open('png.png','wb') #新建一个名为png.png的图片,写入byte数据
b = b.write(a.read()[::-1]) #将flag.jpg图片的byte数据,倒着写入png.png图片里

这里发现图片根本打不开,这也就是我上面提到的,其他文件直接改后缀会出现的情况---文件损坏

后面没什么异常,但是文件开头全是0,很明显是被删掉了,根据png的文件头进行还原
89 50 4E 47 0D 0A 1A 0A
注意:尽量先备份文件再更改!!!

这题涉及图片宽高的改写,需要先知道以下知识:
长度(Length):指定数据块中数据区域的长度,长度不可超过(2^31-1)个字节 数据块类型码(Chunk Type Code):数据块类型码由ASCII字母(A-Z和a-z)组成的"数据块符号" 数据块数据(Chunk Data):存储数据块类型码指定的数据 循环冗余检测(CRC):存储用来检测是否文件传输有误的循环冗余码
PNG图片:

JPG图片:

BMP图片:





前面流程就不展示了,直接快进到binwalk扫描:


注意:有时候binwalk提取出来的文件是损坏的,这时候你可以试试foremost工具,这个更准点,命令为:foremost dog.jpg -o dog //-o:指定输出的文件夹
更强大的二维码识别:https://online-barcode-reader.inliteresearch.com/ GIF分解:https://tu.sioe.cn/gj/fenjie/#google_vignette 在线多功能图片工具:https://tu.sioe.cn/gj/
本文作者:晏秋
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!