2020上海大学生网络安全赛MISC可乐加冰

本文详细介绍了参与2020上海大学生网络安全赛时遇到的一道PNG隐写题的解决过程。通过分析PNG文件结构,发现并修复DATx块的CRC错误,提取出压缩数据,再经过解压、JJEncode解密,最终得到flag。解题关键在于理解PNG文件格式、zlib压缩和JJEncode加密原理。
摘要由CSDN通过智能技术生成

分析:

这是一道杂项类PNG隐写题,在PNG里隐藏了zlib压缩数据。

比赛时解到解压zlib对8346开头的字符串一筹莫展。赛后经群内大佬点化,茅塞顿开,遂复现如下:

复现:

题目附件是一张PNG图片:
在这里插入图片描述
丢到tweakpng里检测一下,发现两个报错:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
分析发现三个IDAT块是没问题的,但是多出了一个无法识别的DATx块,而且没有识别出结尾块IEND,放进Winhex里查看也证实了这一点。
在这里插入图片描述
在Winhex中看出文件尾是不完整的,正常的文件尾应该是 0000 49454E44 AE426082

结合之前tweakpng里的报错:Incorrect crc for DATx chunk (is 9c4e1c00,should be 886b1f6d),即DATx块的CRC校验码不正确,断定DATx中存在大问题。

(PS:注意一下这里tweakpng提示的CRC校验码不正确是因为DATx里藏了zlib把结尾的CRC校验码覆盖了,不要试着改回去,不然就把路走窄了,别问我怎么知道的!)

在这里插入图片描述

binwalk跑一下发现存在zlib:
在这里插入图片描述
在DATx块开头的地方也找到了zlib的文件头:
在这里插入图片描述
(这里选zlib一直选到文件尾也是可以的,解出来的字符串是

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值