1、伪加密

如果压缩文件是加密的,或文件头正常但解压缩错误,首先尝试文件是否为伪加密。zip文件是否加密是通过标识符来显示的,在每个文件的文件目录字段有一位专门标识了文件是否加密,将其设置为00表示该文件未加密,如果成功解压则表示文件为伪加密,如果解压出错说明文件为真加密

操作方法:使用winhex或010editor,找到文件头第九第十个字符,将其修改为0000. (其中50是第一个字符)
1、使用winhex打开文件搜索十六进制504B0102,可以看到每个加密文件的文件头字段
2、从50开始,第九个第十个字符为加密字段,将其设置为0000即可变为无加密状态

1
2
3
4
5
6
7
8
9
10
11
无加密
压缩源文件数据区的全局加密应当为00 00
且压缩源文件目录区的全局方式位标记应当为00 00

伪加密
压缩源文件数据区的全局加密应当为00 00
且压缩源文件目录区的全局方式位标记应当为09 00

真加密
压缩源文件数据区的全局加密应当为09 00
且压缩源文件目录区的全局方式位标记应当为09 00

3、RAR文件由于有头部检验,使用伪加密时打开文件会出现报错,使用winhex修改标志位后如报错消失且正常解压缩,说明是伪加密。使用winhex打开RAR文件,找到第24个字节,将该字节尾数为4表示加密,0表示无加密,将尾数改为0即可破解伪加密

ZIP数据包结构

一个 ZIP 文件由三个部分组成:压缩源文件数据区+压缩源文件数据区+压缩源文件目录结束标志

压缩源文件数据区

1
2
3
4
5
6
7
8
9
10
11
12
13
14
50 4B 03 04:这是头文件标记(0x04034b50
14 00:解压文件所需 pkware 版本
00 00:全局方式位标记(有无加密)
08 00:压缩方式
20 9E:最后修改文件时间
66 4F:最后修改文件日期
F2 1B 0F 4A:CRC-32校验(4A0F1BF2
0E 00 00 00:压缩后尺寸
0C 00 00 00:未压缩尺寸
08 00:文件名长度
00 00:扩展记录长度
66 6C 61 67 2E 74 78 74: 文件名(不定长)
4B CB 49 4C AF 36 34 32 36 31 35 AB 05 00: 文件flag.txt压缩后的数据

压缩源文件数据区

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
50 4B 01 02:目录中文件文件头标记(0x02014b50)
1F 00:压缩使用的 pkware 版本
14 00:解压文件所需 pkware 版本
00 00:全局方式位标记(有无加密,这个更改这里进行伪加密,改为09 00打开就会提示有密码了)
08 00:压缩方式 20 9E:最后修改文件时间 66 4F:最后修改文件日期
F2 1B 0F 4A:CRC-32校验(4A0F1BF2
0E 00 00 00:压缩后尺寸
0C 00 00 00:未压缩尺寸
08 00:文件名长度
24 00:扩展字段长度
00 00:文件注释长度
00 00:磁盘开始号
00 00:内部文件属性
20 00 00 00:外部文件属性
00 00 00 00:局部头部偏移量

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

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

2、破解压缩包密码

明文攻击指已经知道加密的zip中部分文件的明文内容,利用这些内容推测出密钥并解密zip文件的攻击方法,相比与暴力破解,这种方法在破解密码较为复杂的压缩包时的效率更高

例如:假设一个加密的压缩包中有两个文件readme.txt和flag.txt,其中flag.txt的内容时我们希望知道的,而我们拥有readme.txt的明文内容,使用上述两个文件可以进行明文攻击
1、将readme.txt的明文文件压缩,变成readme1.zip
2、打开archpr,攻击类型选择明文,明文文件路径选择readme1.zip
(使用该方法要注意:1、有一个明文文件,压缩后CRC值与加密压缩包中的文件一致 2、明文文件的压缩算法需要与加密压缩文件的压缩算法一致)

3、RAR头部故意给错

有时候给出的RAR文件的头部各个字块会故意给错导致无法识别
文件块的第三个字节为类型块,也叫头类型
头类型是0x72表示是标记块
头类型是0x73表示是压缩文件头块
头类型是0x74表示是文件头块
头类型是0x75表示是注释头块

[参考博客](CTF-MISC总结_Atkx’s Blog-CSDN博客_ctf misc)