【青少年CTF S1·2026 公益赛】好,把他们上市

张开发
2026/4/10 16:55:28 15 分钟阅读

分享文章

【青少年CTF S1·2026 公益赛】好,把他们上市
来源微信 叁玖owo同样也是已知明文爆破注意图中总共有3段命令第一段命令就是进行已经明文爆破得到3段key第二段用破解出的内部密钥把原加密包重新打包成一个新的 ZIP 包并给新包设置一个简单密码比如 1第三段用内部密钥直接把压缩包里的文件解密出来跳过 “生成新包” 的步骤一步到位拿到明文文件。 这里第二段命令或者第三段命令任选其一就行不需要都执行打开pass.txt文件这里是被zlib压缩过了我们需要使用zlib进行解压缩还原为什么会被为是zlib压缩没有接触原题单纯看的作者的题解1、txt打开是乱码大概率是二进制数据2、可以使用binwalk进行识别然后会出现下面的提示DECIMAL HEXADECIMAL DESCRIPTION 0 0x0 zlib compressed data3、也可以使用010进行查看zlib压缩流的开头是 78 9czlib解压脚本如下import zlib try: with open(pass.txt, rb) as f: data f.read() print(f[-] 读取到数据长度: {len(data)}) # 核心zlib 解压-15是专门解无头部zlib流的参数 decompressed_data zlib.decompress(data, -15) print(f[] 解压成功原始文件大小: {len(decompressed_data)} 字节) # 读取解压后的前8个字节判断是什么文件 header decompressed_data[:8].hex().upper() print(f[] 真实文件头: {header}) ext txt # 如果是 PNG 头 → 保存成 png 图片 if header.startswith(89504E47): ext png print([!] 这是一个 PNG 图片) elif header.startswith(FFD8FF): ext jpg # 如果是 ZIP 头 → 保存成 zip 压缩包 elif header.startswith(504B0304): ext zip out_filename freal_pass.{ext} with open(out_filename, wb) as f: f.write(decompressed_data) print(f[] 已保存为: {out_filename} (快去打开它)) except Exception as e: print(f[x] 解压失败: {e}) print(提示如果报错请尝试改用 bkcrack -U 命令生成一个新的 zip 文件直接打开。)扫描得到压缩包密码1145141919810base64解密就行flag{What_WAS_Y0ur_MISS0N_in_ShangHAI!!!}

更多文章