Run,ZIP,Run!
伪加密得到 咕噜的备忘录.txt
“我点高香敬神明,抵我心中意难平…” 我一边哼着抽象小曲,一边在IDE里奋笔疾书。作为一名资深抽象带师,我的活突出一个颠倒——白天睡觉,晚上写码。昨天都没注意把哪个代码都写“颠倒”了。。。
今天leader催着要一份核心代码,我记得我打包压缩了一张重要的图片,但这个密码是啥来着?我一般会用昵称、生日做密码啊,对了,好像当时设置密码的规则是字母加数字,难道是。。。
核心代码的机密,都在钥匙中。。。
Written by gulu 2025.8.2
根据提示进行掩码爆破,得到压缩包中 gulu.png 的密码
gulu20011111
解压出gulu.png,在0通道LSB内容后可以看到压缩包的特征
Reverse + 调整大小端序进行修复,得到压缩包。4字节进行Crc爆破,得到文件内容,其中的base内容如下
25 ----> a2V5
26 ----> MWQx
52 ----> ZTFm
解码后得到
key1d1e1f
这时候注意到Crc爆破文件夹中所有文件的大小总和和code一样都为240,可以合理猜测,这是code但是其中大部分都被5748作为填充位替代了。同时我们也可以注意到,含有Base串的25和26相连,内容符合8字节连续的条件,加上后面的4字节,也满足总共12字节已知的条件,可以进行明文攻击。
这时候根据文件计算偏移
echo -n "ZTFm" | xxd
00000000: 5a54 466d
echo -n "a2V5MWQx" > a2V5MWQx.txt
准备完毕后开始明文攻击
./bkcrack.exe -C gulu.zip -c code -p a2V5MWQx.txt -o 100 -x 208 5a54466d
得到结果如下,可以看到找到了Keys
bkcrack 1.7.1 - 2024-12-21
[20:39:33] Attack on 4194304 Z values at index 107
Keys: 695c87c5 dbed1ff5 3b81d89c
5.7 % (240914 / 4194304)
Found a solution. Stopping.
You may resume the attack with the option: --continue-attack 240914
[20:40:28] Keys
695c87c5 dbed1ff5 3b81d89c
但是Key不一定正确能够解压,通过Key进行解压
./bkcrack.exe -C gulu.zip -c code -k 695c87c5 dbed1ff5 3b81d89c -d code
解压成功 得到了code,先对code里为了明文攻击加的冗杂字符串删除,key前面通过crc以及base64已经得到,编写Exp(这里不知道为什么备忘录里的“颠倒”没有用上)
from Crypto.Util.number import long_to_bytes
cipher = 34263599723268441345883095999948857779098724428498881497417393288
key_hex = "1d1e1f"
key = [int(key_hex[i:i+2], 16) for i in range(0, len(key_hex), 2)] # [29, 30, 31]
cipher_bytes = long_to_bytes(cipher)
flag_bytes = []
for i, b in enumerate(cipher_bytes):
flag_byte = (b ^ key[i % 3]) - i
flag_bytes.append(flag_byte)
flag = ''.join(chr(x) for x in flag_bytes)
print(flag)
得到Flag
NSSCTF{Gulu_S3cr3t_1s_KPA!}
后半段考点满分 脑洞0分(ノ°ο°)ノ