AES多层加密逆向
2026/7/2 3:17:08 网站建设 项目流程
加密流程分析

题目给出了一个加密后的密文,加密过程如下:

  1. 使用3字符密钥k0对flag进行AES-CBC加密,得到中间密文c0

  2. 使用同样长度的密钥k1对c0连续加密三次,得到最终密文c3

  3. 两个密钥均通过sha256从3字符明文生成

text

flag --[AES-CBC(k0)]--> c0 --[AES-CBC(k1)×3]--> c3
解题步骤

第一步:爆破k1

对c3做三次AES-CBC解密,每次解密后进行PKCS7补位校验。当三次解密都成功且补位合法时,说明k1正确,解密结果为c0。

第二步:爆破k0

对c0做一次AES-CBC解密并校验PKCS7补位,验证解密结果是否符合flag的UUID格式。找到匹配的k0即可得到最终flag。

优化方案
  • 利用多进程/批量处理加速暴力搜索

  • 使用PKCS7补位校验 + UUID格式校验作为快速剪枝条件

解题脚本框架

python

from Crypto.Cipher import AES import hashlib from multiprocessing import Pool def derive_key(plain_3chars): return hashlib.sha256(plain_3chars.encode()).digest() def try_decrypt_k1(c3, k1_candidate): # 连续3次AES-CBC解密,每次校验PKCS7 # 全部成功则返回c0 pass def try_decrypt_k0(c0, k0_candidate): # 一次AES-CBC解密,校验PKCS7且结果符合UUID格式 pass

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询