One pieNG一张图片十八个flag复现

#St4rt_fr0m_th1s_5tr1ng#

文件名直接白给一个
#Th1s_i5_s0_34sy!!!#

打开又白给一个
#You_st3gs0lved_me!!!#

放到Stegslove又白给一个
#LSB_1s_v3ry_e4sy_righ7?#

lsb发现一个
#He110_I_4m_Tw0_PieNG#

foremost又白给一个
#A_k3y_1n_exif#

放到010里面又白给一个
#Pn9_He1gh7_6e_ch4ng3d#

改高度又发现一个

#Ju5t_a_1one1y_tEXt_chunk#

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

#An0th3r_key_1n_3xif#

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

#HexEditor_wi11_b3_helpfu1#

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

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

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

#M4yb3_we_sh0uld_9o_d33per#
把高度改得再大一点

发现

#A_key_fr0m_Ph0t0sh0p#

用exiftool查看发现一段十六进制
转换得到flag
#zsteg_do35_no7_a1w4ys_w0rk#
看了mumuzi的wp才知道用Stegsolve切换通道在左上角可以看到隐写的痕迹,比如在Alpha plane7就可以看到明显的痕迹

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

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

#5omet1mes_LSB_g0es_co1o mn_f1r5t#
继续这样子观察隐写痕迹,






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

前提是高度和crc都修复了
#Wh4t_1s_6it_0rder_4nd_y0u_c4n_LSB_b1nd4ta_to0#
然后在rgb三个通道的1和2都发现了一样长的黑线

发现了压缩包

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

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

发现

好家伙
#H1de_h3xd47a_1n_chunk_CRC#
一般情况下,IDAT块都是满65524就进入下一个的,如图

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

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

转换得

本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Kenoeee!





![SWPUCTF 2018]SimplePHP复现](https://cdn.jsdelivr.net/gh/Kenoeee/blog_img/img/111.jpg)