本文已参与「新人创作礼」活动,一起开启掘金创作之路。
WeirdPhoto by K龙
From 2021强网拟态
下载并解压题目文件,得到一个png图片文件以及zip压缩包。压缩包解压需要密码,密钥估计在图片里。
使用stegsolve打开图片,发现无法读取。使用Windows10自带图片查看,发现图片异常。使用kali打开图片,发现图片无法读取。查看IHDR模块,模块数据域正常。
由于Windows系统在打开图片时会忽略CRC校验,因此猜测CRC校验存在问题。
import struct
import binascii
import os
fi=open('1.png','rb').read()
for i in range(10000):
data=fi[12:16]+struct.pack('>I',i)+fi[20:29]
crc=binascii.crc32(data)&0xffffffff
if crc==struct.unpack('>I',fi[29:33])[0]&0xffffffff :
print(i)
使用python脚本,根据CRC计算图片宽度,得1420。
转十六进制得58C。
使用010editor将png宽度改为58C
保存并得到图片。
根据右侧字符,疑似存在栅栏加密。
#-*-coding:utf-*-
s = 'TIEWOFTHSAEOUIITNRBCOSHSTSAN'
factors = [fac for fac in range(2, len(s)) if len(s)%fac == 0]
for fac in factors:
flag = ''
for i in range(fac):
flag += s[i::fac]
print(str(fac)+':'+flag)
长度28,取因数214、47。因数为7时解密得明文。
使用明文解压压缩包,得到一未知格式文件。
使用binwalk命令查看,文件内含大量jpg与zlib数据特征。
使用010editor查看文件,ASCII码疑似md与pdf。文件含175个jpg文件尾,与179个jpg文件头。
比对得pdf文件头被删,补充文件头得pdf文件。
文件内容无异常。
根据wbsteg隐写文件为htm、txt、bmp、pdf。
使用websteg工具,得flag。