1.前文:
在做CTF的misc题目时经常会碰到需要密码的zip文件,打开这种需要密码的方法无非就这三种:
**(1)根据提示或其他文件解出密码**
**(2)暴力破解**
**(3)伪加密修改**
** 在这里我们讲一下第三个伪加密**的原理和修改方法。
2.原理:
** 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 文件注释长度
3.判断是否加密:
** 注意:**
全局方式位标记的四个数字中只有第二个数字对其有影响,其它的不管为何值,都不影响它的加密属性,即:
第二个数字为奇数时 –>加密
第二个数字为偶数时 –>未加密
1.无加密:
压缩源文件数据区的全局方式位标记应当为00 00 (50 4B 03 04 14 00 后)
且压缩源文件目录区的全局方式位标记应当为00 00 (50 4B 01 02 14 00 后)
** ![](https://img-blog.csdnimg.cn/57b1dddf2dea41589d6c651fe5b61a39.png)**
** 2.伪加密:**
压缩源文件数据区的全局方式位标记应当为 00 00 (50 4B 03 04 14 00 后)
且压缩源文件目录区的全局方式位标记应当为 09 00 (50 4B 01 02 14 00 后)
![](https://img-blog.csdnimg.cn/f1b1058224dd453fa5b64358e25268fc.png)
** 3.真加密:**
压缩源文件数据区的全局方式位标记应当为09 00 (50 4B 03 04 14 00 后)
且压缩源文件目录区的全局方式位标记应当为09 00 (50 4B 01 02 14 00 后)
![](https://img-blog.csdnimg.cn/442a0ed55afb49f4a41795f7e5d3ce25.png)
4.修改方法:
确定是伪加密后就需要将其修改为无加密,方法很简单,就是将**压缩源文件目录区的全局方式位标记从**09 00改为00 00。
5.其他途径:
** (1)用binwalk-e 无视伪加密**
**(2)在macOS和kali系统中,可以直接打开伪加密zip文件**
** (3)检测伪加密的工具ZipCenOp.jar**
** (4)有时用WinRAR的修复功能**
** (来自书本《CTF安全竞赛入门》)**
6.反例:
** 这里是本文的重点所在,用winhex判断zip文件是否为伪加密存在问题**,如图所示:
按照上述的判断方法可以得出这是一个加密的zip文件,但实际上这是一个伪加密的zip文件,所以仅靠这种方法不能100%准确判断。
(题目来源:BUUCTF在线评测)
既然这种方法存在问题,那么书本上的其他方法又如何呢,这里我将每个方法试了一试:
(1)用binwalk-e 无视伪加密:
** **在kali中使用自带的函数binwalk,运行后会出现一个文件夹,里面有一个zip文件和
txt文件,但打开txt文件发现没有任何内容。
(2)在kali中打开:
在kali中直接打开还是需要密码
(3)用ZipCenOp.jar工具:
使用ZipCenOp.jar工具,显示是伪加密,但直接还是打不开
(4)用WinRAR的修复功能:
** **添加压缩文件--->选择工具--->点击修复压缩文件,结果不尽人意,还是打不开
7.总结:
zip伪加密的知识点非常简单,一般来说在winhex中修修改改就能解决问题,但在准确度上,还是用工具ZipCenOp.jar这一方法更胜一筹。
版权归原作者 xiaozhaidada 所有, 如有侵权,请联系我们删除。