看雪-2022·KCTF-春季赛-第三题-石像病毒

看雪-2022·KCTF-春季赛-第三题-石像病毒

验证流程:

  1. 输入key, 验证长度是否为32
  2. 使用固定字符串””计算md5。
  3. 使用md5作为密钥对输入的key进行AES加密
  4. 加密结果与程序内置的一段数据进行比较,相同则显示”OK”

注: 程序中的MD5与AES都不是标准的算法,都进行了魔改。

MD5的过程不必关心,只需要dump出计算完的结果。AES的每一步都需要进行还原,并写出对应的逆向算法。

image-20220516095627708

image-20220516095648347

SBOX也进行了修改(左侧为标准的S-BOX):

image-20220516095910141

计算RS-BOX,与标准AES对比:

image-20220516100051064

解密代码:

https://gist.github.com/xjohjrdy/79ad8ce7fb9cc1976f2b28d7fec1629c