CTF中常遇到的图片隐写
- 2020 年 3 月 6 日
- 筆記
文件格式:对于PNG文件来说,其文件头总是由固定的字节来描述的,剩余的部分由3个以上的PNG数据(Chunk)按照特定的顺序组成。
文件头:89 50 4E 47 0D 0A 1A 0A + 数据块 + 数据块 + 数据块…..
修改图片高度
如果linux下打不开,windows下打得开可能就是该高度了。
左边是宽度,圈起来的是高度,把高度改的大一点。

文件尾追加文件
如果是追加文本,直接十六进制编辑器查看就可以
如果追加的是图片或者压缩包之类的,可以使用 binwalk 或者 foremost 来提取出来
元数据(Metadata),又称中介数据、中继数据,为描述数据的数据(Data about data),主要是描述数据属性(property)的信息,用来支持如指示存储位置、历史数据、资源查找、文件记录等功能。
元数据中隐藏信息在比赛中是最基本的一种手法,通常用来隐藏一些关键的 Hint 信息 或者一些重要的比如 password 等信息。
听着挺唬人实际就是文件属性
这类元数据可以 右键文件 -> 属性 查看
outguess
kali下使用
outguess -r avatar.jpg -t 1.txt
把 avatar.jpg 图片破解信息的数据输出到 1.txt
https://pan.baidu.com/s/1avAdUWvzdWng_dQVcW-Zmw
提取码:uwzg
F5隐写加密:
java Embed 原图片.jpg 生成的图片.jpg -e 隐藏的文件.txt -p 密码
F5隐写解密:
java Extract 生成的图片.jpg -p 密码
演示:


ps. 之所以使用 jview 是看自带的 .bat 文件是用的这个,但是用 java 貌似没啥影响

https://pan.baidu.com/s/1IajuX2HQVSVONkbCfjobfQ
提取码: uuch
安装打开后界面是这样的:点击红框框出来的

选择图片比较

上面还有一些选项可以试试

在数据流中可包含多个连续顺序的图像数据块。
采用 LZ77 算法的派生算法进行压缩。
可以用 zlib 解压缩。
IDAT块只有当上一个块充满时,才会继续下 一个新块
如果有 IDAT 还没填满就填充了下一个就要考虑是不是有问题
命令:
pngcheck.exe -v sctf.png 可以查看
也可以使用 Stegsolve 的 Analysis -> File Format 有详细介绍

这就说明这 138 是认为添加的,把这个位置的内容保存出来,再进行其他操作(文本进制转换、写图片)
PNG文件中的图像像数一般是由RGB三原色组成,每一种颜色占用8位,取值范围为 0×00~0xFF,即256种颜色,一共包含了256的三次方的颜色,即16777216(1千677W)种颜色。人类的眼睛可以区分约1000万种不同的颜色,这就意味着人类的眼睛无法区分余下的颜色大约有6777216(677W)种
LSB隐写就是修改RGB颜色分量的最低二进制位(LSB),每个颜色都会有8bit,LSB隐写就是修改了像数中的最低的1Bit,而人类的眼睛不会注意到这前后的区别,每个像数可以携带 3Bit的信息,这样就把信息隐藏起来了
使用 Stegsolve 各个通道都看看,或者 Analysis -> Data Extract 合起来看看,有什么熟悉的保存出来
在某一帧图片藏着信息,用 ps 或者爱奇艺万能播放器也可以一帧一帧的看。
每一帧图片间隔时间,可能藏着规律,或许是二进制编码、或许是摩斯密码。
安恒的一道题:猫片,先是 LSB 提取一个 png,然后改高度得到完整的取反色,下载文件,得到 RAR,使用 NTFS 流隐写,打开软件,然后用 winrar 解压缩,然后扫描一下,发现一些其他的东西,导出就可以了。
