目录
解题思路
题目给了个文件夹,内部文件是 flag.txt,但压缩包有密码,无法直接获取文件。
从题目:zip 伪加密来看,应该是其实没有加密,但是却显示加密,所以看看有没有其他突破口。binwalk 无法直接破解压缩包。
查询 zip 伪加密,获知原理后,将压缩包放至 010 editor 进行修改。将 09,修改为 00
发现压缩包可以解压了,获得了 flag。
题目设计原理
题目设计:主要考察了 zip 伪加密的原理。
题目原理:
CTF 中碰到加密的 zip 文件,一般有以下三种破解方法:
-
根据提示解出密码
-
暴力破解密码
-
伪加密修改
原理:
1. 压缩源文件数据区:
①50 4B 03 04:这是头文件标记 (0x04034b50)
②14 00:解压文件所需 pkware 版本
③00 00:全局方式位标记(判断有无加密)
④08 00:压缩方式
⑤5A 7E:最后修改文件时间
⑥F7 46:最后修改文件日期
2. 压缩源文件目录区:
①50 4B 01 02:目录中文件文件头标记 (0x02014b50)
②1F 00:压缩使用的 pkware 版本
③14 00:解压文件所需 pkware 版本
④00 00:全局方式位标记(判断是否为伪加密)
⑤08 00:压缩方式
⑥5A 7E:最后修改文件时间
⑦F7 46:最后修改文件日期
3. 压缩源文件目录结束标志:
①50 4B 05 06:目录结束标记
②00 00:当前磁盘编号
③00 00:目录区开始磁盘编号
④01 00:本磁盘上纪录总数
⑤01 00:目录区中纪录总数
⑥59 00 00 00:目录区尺寸大小
⑦3E 00 00 00:目录区对第一张磁盘的偏移量
⑧00 00:ZIP 文件注释长度
判断是否加密:
注意:全局方式位标记的四个数字中只有第二个数字对其有影响,其它的不管为何值,都不影响它的加密属性,即: 第二个数字为奇数时 –> 加密 第二个数字为偶数时 –> 未加密
1. 无加密:
压缩源文件数据区的全局方式位标记应当为00 00 (50 4B 03 04 14 00 后)
且压缩源文件目录区的全局方式位标记应当为00 00 (50 4B 01 02 14 00 后)
2. 伪加密:
压缩源文件数据区的全局方式位标记应当为 00 00 (50 4B 03 04 14 00 后)
且压缩源文件目录区的全局方式位标记应当为 09 00 (50 4B 01 02 14 00 后)
3. 真加密:
压缩源文件数据区的全局方式位标记应当为09 00 (50 4B 03 04 14 00 后)
且压缩源文件目录区的全局方式位标记应当为09 00 (50 4B 01 02 14 00 后)
参考资料:
zip伪加密:CTF——zip伪加密-CSDN博客
总结
OK,今天也是学到东西的一天,发了那么多天简单的东西,终于舍得上点干货了。