CTF - MISC - 关于zip破解的几种方式

## 前言

被压缩包虐得欲仙欲死,按照惯例,应当予以记录,以便后续的复习和使用。

 

## 1. zip属性隐藏

## 2. zip伪加密

要知道zip文件的结构。Zip文件由三个部分组成:压缩源文件数据区+压缩源文件目录区+压缩源文件目录结束标志 

下面我们来看下这个例子:

压缩源文件数据区: 

50 4B 03 04:这是头文件标记(0x04034b50) 
14 00:解压文件所需 pkware 版本 
00 00:全局方式位标记(有无加密) 
08 00:压缩方式 
5A 7E:最后修改文件时间 
F7 46:最后修改文件日期 
16 B5 80 14:CRC-32校验(1480B516) 
19 00 00 00:压缩后尺寸(25) 
17 00 00 00:未压缩尺寸(23) 
07 00:文件名长度 
00 00:扩展记录长度 
6B65792E7478740BCECC750E71ABCE48CDC9C95728CECC2DC849AD284DAD0500 
压缩源文件目录区: 
50 4B 01 02:目录中文件文件头标记(0x02014b50) 
3F 00:压缩使用的 pkware 版本 
14 00:解压文件所需 pkware 版本 
00 00:全局方式位标记(有无加密,这个更改这里进行伪加密,改为09 00打开就会提示有密码了) 
08 00:压缩方式 
5A 7E:最后修改文件时间 
F7 46:最后修改文件日期 
16 B5 80 14:CRC-32校验(1480B516) 
19 00 00 00:压缩后尺寸(25) 
17 00 00 00:未压缩尺寸(23) 
07 00:文件名长度 
24 00:扩展字段长度 
00 00:文件注释长度 
00 00:磁盘开始号 
00 00:内部文件属性 
20 00 00 00:外部文件属性 
00 00 00 00:局部头部偏移量 
6B65792E7478740A00200000000000010018006558F04A1CC5D001BDEBDD3B1CC5D001BDEBDD3B1CC5D001

  

  

压缩源文件目录结束标志: 

50 4B 05 06:目录结束标记 
00 00:当前磁盘编号 
00 00:目录区开始磁盘编号 
01 00:本磁盘上纪录总数 
01 00:目录区中纪录总数 
59 00 00 00:目录区尺寸大小 
3E 00 00 00:目录区对第一张磁盘的偏移量 
00 00:ZIP 文件注释长度

  

如果是 伪加密 ,我们可以用16进制编辑器添加文件头或文件尾,即可修复zip

有没有工具可以简便的识别这种情况?

使用检测伪加密的ZipCenOp.jar,解密后如果能成功打开zip包,则是伪加密,否则说明思路错误

解密例子:

java -jar ZipCenOp.jar r xxx.zip

 加密例子:

java -jar ZipCenOp.jar e xxx.zip

  

 

## 3. 弱密码(暴力破解)

这个就不多思考了,上工具

Windows下一般使用的是ARCHPR

  掩码攻击就是通过已知密码的某几位进行构造,例如 在界面中 范围-掩码 ,构造 ??T 进行爆破

Linux下使用pkcrack

 

 

## 4. 明文攻击()

 

大致原理:

当你不知道一个zip的密码,但是你有zip中的一个已知文件(文件大小要大于12Byte)或者已经通过其他手段知道zip加密文件中的某些内容时,因为同一个zip压缩包里的所有文件都是使用同一个加密密钥来加密的,所以可以用已知文件来找加密密钥,利用密钥来解锁其他加密文件

 

posted @ 2021-12-01 16:44  ardyh  阅读(3561)  评论(0编辑  收藏  举报