首页
社区
课程
招聘
4
[原创]看雪CTF TSRC 2018团队赛第八题
发表于: 2018-12-17 12:07 3923

[原创]看雪CTF TSRC 2018团队赛第八题

2018-12-17 12:07
3923

又是一个控制台的程序,所以很容易找到sn的验证处。在把sn转换到16后,进行验证。这里有两个关键的函数需要分析 sub_401AC0和sub_401710



首先分析sub_401AC0,参数为我们输入的sn的16进制形式。ida反编译的代码看起来很复杂。首先调用了sub_402890获取前16个字节,然后进行了位置变换,可以当做4X4的二维数组的操作看待。


接下来在一个while循环里有一个stl模板库中vector的痕迹

通过比较stl的源码和动态调试分析发现,这是一个vector的push_back操作,操作的元素是一个复数,这个在后面的复数乘法运算中可以确定出来。这个while循环的作用就是把前面获取的16个字节转换到复数保存到vector对象,然后在进行复数的乘法运算,之后调用了sub_402D80。

在sub_402D80函数里也有vector的操作,配合动态分析发现。通过循环对每一列做快速傅里叶变换FFT,这个函数对应的是sub_402B90,然后再对每一行做FFT。回到 sub_401AC0函数继续分析,又进行了复数的乘法。调用sub_4033D0函数进行每一列和每一行的快速傅里叶逆变换。

最后进行运算结果的比较

因为这些操作都是可逆的所以可以编写相应的逆向算法来解密,相应的代码我会放到附件里,解密出前32个字节如下:


进入sub_401710函数进行分析。

[注意]看雪招聘,专注安全领域的专业人才平台!

上传的附件:
收藏
免费 4
支持
分享
赞赏记录
参与人
雪币
留言
时间
PLEBFE
为你点赞~
2022-7-27 01:51
心游尘世外
为你点赞~
2022-7-26 23:48
飘零丶
为你点赞~
2022-7-17 03:23
Editor
为你点赞~
2018-12-17 18:21
最新回复 (0)
游客
登录 | 注册 方可回帖
返回

账号登录
验证码登录

忘记密码?
没有账号?立即免费注册