Bugku-请攻击这个压缩包
下载文件,是一个加密的压缩包
通过7z打开观察flag.png属性
可以看到它的算法是: ZipCrypto Store
ZipCrypto 是一种传统的 ZIP 文件加密方式,主要用于兼容性较高的场景。它通过将密码转换为三个 4 字节的密钥来加密文件内容。然而,ZipCrypto 的安全性较弱,容易受到已知明文攻击(Known-Plaintext Attack)的威胁。
工作原理
ZipCrypto 使用流密码对文件进行加密。加密过程包括以下步骤:
用户输入的密码被转换为三个 4 字节的密钥。
这些密钥用于加密文件内容。
解密时,使用相同的密钥还原文件。
工具与破解
以下是常用的 ZipCrypto 破解工具及方法:
bkcrack:通过已知明文攻击快速破解 ZipCrypto 加密的文件。
pkcrack:适用于 Linux 系统的破解工具。
明文攻击,通常需要拥有一个与压缩包内一样的文件才能完成
但是我们这里利用ZipCrypto Store的特性,只需要知道加密压缩包内容的12个字节
就可以对该压缩包进行明文攻击破解
PNG文件十六进制头:
89 50 4E 47 0D 0A 1A 0A 00 00 00 0D 49 48 44 52
在kali创建一个与flag.png相同的文件
echo 89504E470D0A1A0A0000000D49484452 | xxd -r -ps > flag.png
并将flag.zip和flag.png放在同一个文件夹(temp)里
利用bkcrack工具
time:加上time参数查看计算爆破时间
-C:选择加密压缩包
-c:选择压缩包的密文部分
-p:选择的明文文件
-o:指定的明文在压缩包内目标文件的偏移量
> 1.log&:后台运行,并将结果存入1.log
执行以下代码
time bkcrack -C file.zip -c flag.png -p png_header -o 0 > 1.log&
再执行以下命令,查看破解进度和结果:
tail -f 1.log
如此便获得了三段密钥:92802c24 9955f8d6 65c652b8
-k:输入三段密钥
-d:输出
接下来就是利用三段密钥,把flag.png文件取出来
bkcrack -C file.zip -c flag.png -k 92802c24 9955f8d6 65c652b8 -d 1.png
解出flag:BugKu{不是非得两个文件你才能明文攻击}
文章借鉴引用:Bugku CTF:请攻击这个压缩包[WriteUP]