-
-
[原创]CTF2017秋季赛第五题的穷举解法
-
发表于:
2018-1-4 12:22
4506
-
CTF2017秋季赛虽然已经过去2个月多,对于其中第五题,不少大牛给出了逆向的解法。剖析展示了详细流程及椭圆曲线、矩阵、魔方变换什么的等复杂算法。对于加密算法,比如对称算法、非对称算法、线性散列算法、椭圆曲线、傅里叶变换、欧拉公式。。。一概不知,所以便有了以下的穷举解法。
通过ida和od分析一些关键信息:
由上可知序列号的一些关键信息,位数、算法call和验证点,由于对复杂算法的无知,便有了穷举解法脚本:
上图FE7211中jne正常跳往失败,为循环验证,现改为jmp FE7209,再次进入算法call中验证下一个序列号,下一个序列号由以下脚本中穷举12位序列号生成的js代码产生(脚本第25到36行),再覆盖写入第一次输入序列号的内存地址(视频中为第一次输入012345678978),然后按照原程序的判断逻辑算法进行验证,如果符合算法要求便弹框显示结果,否则jmp到算法call中继续验证。其中要注意的是再次跳回算法call中时要注意恢复eax和edx第一次运行时的内容(脚本第21、22、43行),这样程序才能循环穷举不出错。
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)
最后于 2018-3-8 09:11
被ssarg编辑
,原因: