天虫的秘密
本题考查 Padding Oracle Attack。
题目生成 key 和 iv1,并使用 AES-CBC 模式加密 FLAG 得到 ct,输出 iv1+ct 的 Base64 编码。 oracle 接收一段 iv+ct 的 Base64 编码,然后使用 key 和 iv 解密 ct 得到 pt,返回 pt 是否具有正确的 padding。 选手可以无限次交互。
NOTE
padding: 这里使用了 unpad(pt,16),填充协议是 PKCS#7。正确的填充格式是:当明文距离分块长度还差 0xT。
CBC 解密关系如下:
CBC 的解密过程可以表示为: key 解密。 整个解题过程中无法控制 OK,就说明当前
攻击的核心就是利用 padding 校验结果:当 padding 合法时,可以据此推导出部分明文字节。
以恢复明文最后一个字节为例。修改 OK,即可确定
之后将该过程扩展到整个分块即可。已知
其中 IV 即
该类攻击脚本较为通用,可以复用常见 Padding Oracle Attack 模板完成求解。