题目考点
- 文档隐写
- png高度隐写
解题思路
首先下载附件获得了一个excel
文件,打开发现是个字符画。
尝试提取出其中内容并搜索flag
、nynu
、ctf
并未发现任何有用文本。
于是转换思路尝试采用word隐写
类似的方法进行解题。
顺利在xl/media
路径下发现了一张图片。
解压后得到一张之前字符画的高清大图。
但是结合刚才在压缩包中无法显示缩略图的情况,猜测这张图片存在隐写或者数据异常的情况。于是用010
打开。
文件尾未见附加文件。
使用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
的新图片。
并没有发现flag。
但是这个高度隐写已解确实验证是存在的了,于是猜测可能crc被人为修改过,导致爆破出来的高度并发原始高度,而是出题人希望我们看到的高度。
那么直接010
里面暴力改高度,因为不知道具体有多高,所以尽量往大了改。
成功在下面发现flag。
flag
别偷看呀
nynuctf{2e90825f-5d98-4d20-b782-eb48a8d129d3}