2024领航杯本科组 RE wp

ezsystd

jadx打开文件 找到主函数

本科组 easystd-1

分析 主要的判断在check

本科组 easystd-1

调用本地native 所以分析native层 ida打开libcma.so 进入sub_904函数 发现一个类似sbox的数组

本科组 easystd-6

跟7异或 跑一下异或之后的sbox

1
2
3
4
5
a = [ 0xD1, 0x97, 0xEE, 0xF9, 0xCB, 0xE6, 0x3A, 0xB0, 0x11, 0xB1]  
for i in range(len(a)):
a[i]^=7
print(hex(a[i]),end=' ')
#0xd6 0x90 0xe9 0xfe 0xcc 0xe1 0x3d 0xb7 0x16 0xb6

发现是sm4的sbox 而且轮数也是32轮 所以猜测是sm4加密 找密文和密钥
跟进sub_75C函数 在最下面找到密文byte_C14

本科组 easystd-5

密钥在这个地方

本科组 easystd-7

跟进之后可以发现是将后八位替换为0x5A30303939383634

本科组 easystd-8

注意是小端序存储 所以密钥应该是A11223574689900Z 扔赛博厨子里跑一下

本科组 easystd-9

得到flag

本科组 easystd-10