[ACTF新生赛2020]crypto-aes
题目
aes.py
from Cryptodome.Cipher import AES
import os
import gmpy2
from flag import FLAG
from Cryptodome.Util.number import *
def main():
key=os.urandom(2)*16
iv=os.urandom(16)
print(bytes_to_long(key)^bytes_to_long(iv))
aes=AES.new(key,AES.MODE_CBC,iv)
enc_flag = aes.encrypt(FLAG)
print(enc_flag)
if __name__=="__main__":
main()
output:
91144196586662942563895769614300232343026691029427747065707381728622849079757
b'\x8c-\xcd\xde\xa7\xe9\x7f.b\x8aKs\xf1\xba\xc75\xc4d\x13\x07\xac\xa4&\xd6\x91\xfe\xf3\x14\x10|\xf8p'
解题思路
也是头一次做AES的题,光了解原理还是不会做题,不如直接题目入手。

本文介绍了如何解决ACTF新生赛2020中的一道crypto-aes题目,涉及到AES加密模式CBC,以及字节翻转攻击的解题方法。通过分析代码,理解了key和iv的生成方式,以及利用异或恢复key的部分。最终通过异或操作和AES解密得到了原始flag。
最低0.47元/天 解锁文章
6315

被折叠的 条评论
为什么被折叠?



