平台WP · 2021年9月1日

[Misc]学长的凝视

题目考点

  1. 文档隐写
  2. png高度隐写

解题思路

首先下载附件获得了一个excel文件,打开发现是个字符画。

file

尝试提取出其中内容并搜索flagnynuctf并未发现任何有用文本。

于是转换思路尝试采用word隐写类似的方法进行解题。

顺利在xl/media路径下发现了一张图片。

file

解压后得到一张之前字符画的高清大图。

file

但是结合刚才在压缩包中无法显示缩略图的情况,猜测这张图片存在隐写或者数据异常的情况。于是用010打开。

文件尾未见附加文件。

file

使用pngcheck检查文件情况,发现crc异常,猜测可能是高度隐写。

λ pngcheck.exe image1.png
image1.png  CRC error in chunk IHDR (computed 83af5e74, expected 8f215683)
ERROR: image1.png

于是使用脚本爆破高度。

import binascii
import struct
import sys

file = input("图片地址:")
fr = open(file,'rb').read()
data = bytearray(fr[0x0c:0x1d])
crc32key = eval('0x'+str(binascii.b2a_hex(fr[0x1d:0x21]))[2:-1])
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 = binascii.crc32(data) & 0xffffffff
        if crc32result == crc32key:
            print(width,height)
            newpic = bytearray(fr)
            for x in range(4):
                newpic[x+16] = width[x]
                newpic[x+20] = height[x]
            with open(file+'.png','wb') as f:
                f.write(newpic)
            sys.exit()

得到一张高度为720的新图片。

file

file

并没有发现flag。

但是这个高度隐写已解确实验证是存在的了,于是猜测可能crc被人为修改过,导致爆破出来的高度并发原始高度,而是出题人希望我们看到的高度。

那么直接010里面暴力改高度,因为不知道具体有多高,所以尽量往大了改。

file

成功在下面发现flag。

file

flag

别偷看呀

nynuctf{2e90825f-5d98-4d20-b782-eb48a8d129d3}