目录 1.前文: 2.原理: 1.压缩源文件数据区: 2.压缩源文件目录区: 3.压缩源文件目录结束标志: 3.判断是否加密: 1.无加密: 2.伪加密: 3.真加密: 4.修改方法: 5.其他途径: 6.反例: (1)用binwalk-e 无视伪加密: (2)在kali中打开: (3)用ZipCenOp.jar工具: (4)用WinRAR的修复功能: 7.总结: 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 后) ![img](assets/57b1dddf2dea41589d6c651fe5b61a39.png) 2.伪加密: 压缩源文件数据区的全局方式位标记应当为 00 00 (50 4B 03 04 14 00 后) 且压缩源文件目录区的全局方式位标记应当为 09 00 (50 4B 01 02 14 00 后) ![img](assets/f1b1058224dd453fa5b64358e25268fc.png) 3.真加密: 压缩源文件数据区的全局方式位标记应当为09 00 (50 4B 03 04 14 00 后) 且压缩源文件目录区的全局方式位标记应当为09 00 (50 4B 01 02 14 00 后) ![img](assets/442a0ed55afb49f4a41795f7e5d3ce25.png) 4.修改方法: 确定是伪加密后就需要将其修改为无加密,方法很简单,就是将压缩源文件目录区的全局方式位标记从09 00改为00 00。 ![img](assets/3acaaf6760fa4461919aaeb973f83ee2.png) ![img](assets/4c5a2dcbbc33405c9263904d366ac547.png) 5.其他途径: (1)用binwalk-e 无视伪加密 (2)在macOS和kali系统中,可以直接打开伪加密zip文件 (3)检测伪加密的工具ZipCenOp.jar (4)有时用WinRAR的修复功能 (来自书本《CTF安全竞赛入门》) 6.反例: 这里是本文的重点所在,用winhex判断zip文件是否为伪加密存在问题,如图所示: ![img](assets/1bfa3eb33e784e988903308c503817b5.png) 按照上述的判断方法可以得出这是一个加密的zip文件,但实际上这是一个伪加密的zip文件,所以仅靠这种方法不能100%准确判断。 (题目来源:BUUCTF在线评测) 既然这种方法存在问题,那么书本上的其他方法又如何呢,这里我将每个方法试了一试: (1)用binwalk-e 无视伪加密: 在kali中使用自带的函数binwalk,运行后会出现一个文件夹,里面有一个zip文件和 txt文件,但打开txt文件发现没有任何内容。 ![img](assets/305e831eb7a044fb9bae357c78c79824.png) ![img](assets/9ab99a70038a4ac09d5e8641e668130b.png) (2)在kali中打开: 在kali中直接打开还是需要密码 ![img](assets/9ff9732990d647018e6eac543cb5a991.png) (3)用ZipCenOp.jar工具: 使用ZipCenOp.jar工具,显示是伪加密,但直接还是打不开 ![img](assets/199b664028204e178b18811664dc906d.png)![img](assets/42eec8b24831454db640aa70c387de60.png) (4)用WinRAR的修复功能: 添加压缩文件--->选择工具--->点击修复压缩文件,结果不尽人意,还是打不开 ![img](assets/a13f1f86fc0947368ab6eff936508d28.png) ![img](assets/765972979a044168b2c122cde1fd2cee.png) 7.总结: zip伪加密的知识点非常简单,一般来说在winhex中修修改改就能解决问题,但在准确度上,还是用工具ZipCenOp.jar这一方法更胜一筹。
标签:00,zip,加密,assets,img,压缩,png From: https://www.cnblogs.com/Liagu/p/18194669