avater

#St4rt_fr0m_th1s_5tr1ng#

avater

文件名直接白给一个

#Th1s_i5_s0_34sy!!!#

avater

打开又白给一个

#You_st3gs0lved_me!!!#

avater

放到Stegslove又白给一个

#LSB_1s_v3ry_e4sy_righ7?#

avater

lsb发现一个

#He110_I_4m_Tw0_PieNG#

avater

foremost又白给一个

#A_k3y_1n_exif#

avater

放到010里面又白给一个

#Pn9_He1gh7_6e_ch4ng3d#

avater

改高度又发现一个

avater

#Ju5t_a_1one1y_tEXt_chunk#

avater

不愧是套娃题,优美的文件结构

avater

#An0th3r_key_1n_3xif#

avater

一段看起来像base编码的,根据前面的b58知道是base58编码

avater

#HexEditor_wi11_b3_helpfu1#

avater

放到kali里zsteg一把梭出来一个

#IDAT_i5_a_alib_p4cka9e#

avater

发现有一个IDAT块不正常,数据太少

avater

发现是这段十六进制,是zlib数据,这里用脚本跑一下

1
2
3
4
5
6
7
import zlib
import binascii
IDAT=("789C53F674710C89CF348D4F8CAF32CC4C8A2F3049CE4EB44C5506005F0E07CB").decode("hex")
result=binascii.hexlify(zlib.decompress(IDAT))
print result
print (result.decode('hex'))
print (len(result.decode('hex')))

avater

#M4yb3_we_sh0uld_9o_d33per#

把高度改得再大一点

avater

发现

avater

#A_key_fr0m_Ph0t0sh0p#

avater

用exiftool查看发现一段十六进制

转换得到flag

#zsteg_do35_no7_a1w4ys_w0rk#

看了mumuzi的wp才知道用Stegsolve切换通道在左上角可以看到隐写的痕迹,比如在Alpha plane7就可以看到明显的痕迹

avater

同时在Red plane7、Blue plane7、Green plane7也可以看到一样的痕迹,又因为痕迹是竖着的,所以如图这么选可以看到flag

avater

在原图里也可以看到明显的彩色的痕迹

avater

#5omet1mes_LSB_g0es_co1o mn_f1r5t#

继续这样子观察隐写痕迹,

avater

avater

avater

avater

avater

avater

可以发现Red plane0、1和Green plane0、1都十分相似,果然发现了flag

avater

前提是高度和crc都修复了

#Wh4t_1s_6it_0rder_4nd_y0u_c4n_LSB_b1nd4ta_to0#

然后在rgb三个通道的1和2都发现了一样长的黑线

avater

发现了压缩包

avater

save bin后解压失败,在010里面把多余的部分去掉就可以解压了

avater

#eXtr4_IDAT_of_an0th3r_Pn9#

前面用pngdebugger跑的时候发现IDAT块特别多,虽然foremost出来一张图片,但是很小,所以把前面报错的IDAT块在Tweakpng删掉然后导出

avater

发现

avater

好家伙

#H1de_h3xd47a_1n_chunk_CRC#

一般情况下,IDAT块都是满65524就进入下一个的,如图

avater

但是前面报错的部分有几个连续的都是65536,比较可疑

avater

有8个这样子的块,pngdebugger里面发现crc前两位都是00,这样子可以提取出8*6=48个数字

avater

转换得

avater