题目
第三届 SHCTF 公开赛道\题目\MISC\Open my puff

解密
打开压缩包并解压

零宽字符在线解密
1.txt里面是明显的零宽字符

在线解密网址:https://tool.bfw.wiki/tool/1695021695027599.html
将字符放入右侧,解密后得到
bash
keyA:12345678
keyB:qwertyui
keyC:asdfghjk

OpenPuff解密
2.png尝试了各种隐写,并未发现任何问题

但用010打开,发现末尾有openpuff4.01的字样,同时联想题目Open my puff提示,应该使用了OpenPuff加密,且版本尽量是4.01版本

加密解密工具下载地址:https://openpuff.en.lo4d.com/download

输入密钥ABC并选择图片,进行解密


得到一个azaa.zip的压缩包,进行解压

解压压缩包

根据已知明文使用bkcrack破解压缩包
打开flag.txt
并没有什么线索
bash
niimmccw????zfip

打开flag.zip
发现里面也有一个flag.txt,那么线索很可能就是,外面的flag.txt文件包含了压缩包里面的flag.txt的部分内容

且采用了zipcrypto store加密算法

进制转换
第0位开始的数据:niimmccw ------> 6e69696d6d636377,共8字节

第12位开始的数据:zfip ------> 7a666970,共4字节
zfip前面有11个数值:niimmccw???
破解原理
-
破解原理:只需要至少 12 字节的已知明文(其中至少 8 字节必须是连续的)就能进行攻击,可以是分开的12字节,也可以是在一起的12字节
-
bkcrack下载地址:
-
将bkcarck.exe放到待解密的压缩包下

破解加密密钥
bash
.\bkcrack.exe -C flag.zip -c flag.txt -x 0 6e69696d6d636377 -x 12 7a666970
参数说明:
-C flag.zip:指定要破解的加密 ZIP 文件-c flag.txt:指定 ZIP 内的目标文件(flag.txt)-x 0 6e69696d6d636377:在偏移量 0 处提供已知明文(十六进制)-x 12 7a666970:在偏移量 12 处提供已知明文(十六进制)
执行过程:
- 使用 1 字节已知明文进行 Z 值缩减
- 在索引 6 处对 2818048 个 Z 值进行攻击
- 找到密钥:
4543d810 f89b3d67 531a63b0 - 攻击进度达到 32.6% 时找到解(这个过程挺慢的,十分钟吧)
bash
PS C:\Users\Administrator\Desktop\azaa> .\bkcrack.exe -C flag.zip -c flag.txt -x 0 6e69696d6d636377 -x 12 7a666970
bkcrack 1.8.1 - 2025-10-25
[14:47:23] Z reduction using 1 bytes of known plaintext
100.0 % (1 / 1)
[14:47:23] Attack on 2818048 Z values at index 6
Keys: 4543d810 f89b3d67 531a63b0
32.6 % (918733 / 2818048)
Found a solution. Stopping.
You may resume the attack with the option: --continue-attack 918733
[14:58:18] Keys
4543d810 f89b3d67 531a63b0

生成指定密码的 ZIP 文件
bash
.\bkcrack.exe -C flag.zip -k 4543d810 f89b3d67 531a63b0 -U flag1.zip easy
参数说明:
-C flag.zip:原始加密的 ZIP 文件-k 4543d810 f89b3d67 531a63b0:使用破解得到的三个密钥-U flag1.zip easy:生成新的 ZIP 文件,使用密码 "easy"
bash
PS C:\Users\Administrator\Desktop\azaa> .\bkcrack.exe -C flag.zip -k 4543d810 f89b3d67 531a63b0 -U flag1.zip easy
bkcrack 1.8.1 - 2025-10-25
[15:14:18] Writing unlocked archive flag1.zip with password "easy"
100.0 % (1 / 1)
Wrote unlocked archive.


也可以直接提取flag.txt文件,命令如下:
bash
.\bkcrack.exe -C flag.zip -c flag.txt -k 4543d810 f89b3d67 531a63b0 -d flag.txt
解密压缩包


答案
SHCTF{N3ur4l_Gl1tch_1n_Th3_5yst3m}
