ctf 图片

图片里蕴含信息

这就得具体情况具体分析了。

改后缀

可能一开始给我们的不是图片,而是文档之类的,用记事本打开
在这里插入图片描述
如果像这一类的就是改PNG图片,
有个别需要改后缀名少见 ,
图片后缀很多,例如png、jpg、bmp、gif、tif、webp也有在线转化的网站哦。
但也有像bpg文件,无法直接查看。到网站https://bellard.org/bpg/下载
在这里插入图片描述
把你要查看的bpg文件放到你下载工具的目录下,打开命令符,输入bpgview.exe 文件名就行了
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
有些需要先去在线网站把图片格式转化,才能直接binwalk提取就能得到flag.png了。
例如png格式转为bmp格式,bmp格式下,中间的位置插入了一个gzip的数据,直接肉眼看很难看出来,至于为什么原本的png格式下,binwalk得不到结果呢?大师傅们的解释是png和bmp像素点的读取方式不一样。

16进制

这里我用的是winhex
在这里插入图片描述

属性

有些信息隐藏在属性中
在这里插入图片描述
有的和你说在图片属性中,但是右键找不到,右键的信息比较少,
**https://exif.tuchong.com/**信息比较全
在这里插入图片描述
在模板块中也能找到

binwalk分离

而有些东西需要分离才能查到
binwalk -e
在这里插入图片描述
在这里插入图片描述

藏在另一张图

这是一张图。在这里插入图片描述
放入tweakpng中,删除一个IDAT块,保存为新的图片。得到flag
在这里插入图片描述
在这里插入图片描述

手撸

binwalk分析发现有额外数据,直接binwalk -e或者foremost分离不出来,无奈手撸。
从选中的数据开始,复制到结尾,新建为一个jpg文件。
在这里插入图片描述

thumbnail隐写

magicexif(http://www.xue51.com/soft/23613.html)打开

在这里插入图片描述
在这里插入图片描述

藏在时间里

利用exiftools查看时间
在这里插入图片描述
将得到的时间进行时间戳转化(一开始都不知道有这东西)
在这里插入图片描述
时间戳再转hex得到flag。

高度

bmp
在这里插入图片描述

bmp即第二行6-9位修改位为高即可
在这里插入图片描述
在这里插入图片描述
png
一般在第二行4-7
在这里插入图片描述
JPG.
一般在ffc0后面
在这里插入图片描述
GIF
一般在8403后面
在这里插入图片描述

宽度

我们一般不知道多少,而宽也没法像高度试试,所以复制了大佬代码。

同时爆破宽度和高度

filename = "misc32.png"
with open(filename, 'rb') as f:
    all_b = f.read()
    data = bytearray(all_b[12:29])
    n = 4095
    for w in range(n):
        width = bytearray(struct.pack('>i', w))
        for h in range(n):
            height = bytearray(struct.pack('>i', h))
            for x in range(4):
                data[x+4] = width[x]
                data[x+8] = height[x]
            crc32result = zlib.crc32(data)
            #替换成图片的crc
            if crc32result == 0xE14A4C0B:
                print("宽为:", end = '')
                print(width, end = ' ')
                print(int.from_bytes(width, byteorder='big'))
                print("高为:", end = '')
                print(height, end = ' ')
                print(int.from_bytes(height, byteorder='big'))

在这里插入图片描述
在这里插入图片描述

藏在动态图中

有些GIF图片闪的快,可能就在某一帖中。
需要注意的是APNG图片也是动态图,如果直接用图片查看,看到的只是一张图片,如果用浏览器打开就是个动态图。需要用工具APNG Disassembler分离
不过也有是利用不同帧之间的间隔时间来隐写的。kali里用命令identify -format "%T " misc39.gif > misc39.txt提取帧数.

特殊字符组成

在这里插入图片描述

IDAT

用tweakpng打开图片,发现这七个数正好是ctfshow对应的ascii码
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210601203607739.png在这里插入图片描述
更过分的是
用tweakpng打开,报了一堆错,然后使用pngdebugger分析,发现所有IDAT块的crc32值都是错误的
,所以也可能藏在错误中,如果对错都多的话有可能对错是0或1.
在这里插入图片描述
还有每一个IDAT块前面都会有一个fcTL块,它其中就包含水平垂直偏移量。所以可能是坐标啥的。

stegsolve

这个我另一篇博客有写,但是考虑到比较懒的,就在这里在写一遍吧。
格式

File Format:文件格式
Data Extract:数据提取
Steregram Solve:立体试图 可以左右控制偏移
Frame Browser:帧浏览器
Image Combiner:拼图,图片拼接

用法(使用场景

1.File Format:这里你会看见图片的具体信息有时候有些图片隐写的flag会藏在这里
2.Data Extract:好多涉及到数据提取的时候
3.Steregram Solve:立体试图 可以左右控制偏移 可以放张图片试一下就知道这个是什么意思了
4.Frame Browser:帧浏览器 主要是对GIF之类的动图进行分解,把动图一帧帧的放
5.Image Combiner:拼图,图片拼接(意思显而易见)

直接用
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
stereogramsolver
在这里插入图片描述
在这里插入图片描述
Data Extract
在这里插入图片描述
在这里插入图片描述
用这个Data Extract出来
也不是很会用就取最低值了
在这里插入图片描述


版权声明:本文为weixin_52612705原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。