第二题 子鼠开天
直接打开ida进行分析
大概我们知道了基本密钥的长度64,主要函数sub_401380
目测分成了三个算法等等,用findkey看了一下
具有tea和ase算法,4010F0为aes算法,401190为tea算法
401000:
主要是把我们输入的密码变成内存中的数据
经过这个算法变成:
0x19FE6C就相当于我ida中v9数组的地址
aes算法 通过v9 算出v10
rsa算法,通过v10算出v5,v6和v7属于v5的一个数组(猜测)没有判断条件
尝试去找rsa的公钥以及密钥
这里是我们输入数据改变的地方
e=0x10001
n=0x69823028577465AB3991DF045146F91D556DEE8870845D8EE1CD3CF77E4A0C39
0019FD7C可以看到后面的16位:14AF58AD4D76D59D8D2171FFB4CA2231通过已知的正确密钥看到前16位的排布
得到的是:00025D343CED2E5A3CD5FE94CEA15700
d = 0x390A684CB713378FFD5CCE8C4000B5D6A2BB9F29B63D395E6BE6E9DD941527BD
这个地方通过我们输入的KCTF的tea得到的对比值
data 可以随便但是 是中间随便:随意可以多解(根据题目给的序列号已知的正确的那个可以求解那么一定是正确的)
1 | e = 0x10001 |
得到rsa的数据后 我们回去看一下aes加密
我们v10得到了,由于aes加密解密都在这个函数中 所以我直接把得到的数值放到 v9位置上
即 0x19FDAC
看一下ida中的逻辑
aes加密是根据a6有关,所以不管他是加密还是解密我们不管,直接修改a6值,a6修改成1,直接观看19FDCC数据
跑就完事!就可以得到解密的东西
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.