文章使用项目地址Zipfake
0x00前言
在CTF竞赛中遇到有关Zip的题目时,常见的解决方法为以下三种
1.根据提示或其他文件中得到明文密码
2.枚举爆破
3.伪加密处理
0x01原理
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 文件注释长度
在010中可以清晰看见Zip文件格式
前面的灰色背景的十六进制数字为压缩源文件数据区
中间紫色背景的十六进制数字为压缩源文件目录区
后面黄色背景的十六进制数字为压缩源文件目录结束标志
0x02 判断
关注点为红框内的内容
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 后)
0x03 Zipfake工具使用
通过github一开脚本来直接处理Smi1eH/Zipfake
🌸🌸🌸如果在使用过程中有问题,欢迎各位师傅提问题给我哈🌸🌸🌸
🌸🌸🌸 如果各位师傅觉得这个工具好用,麻烦给个Star,万分感谢!! 🌸🌸🌸