首页
社区
课程
招聘
[原创]KCTF2021签到题(身在何处)writeup
发表于: 2021-11-16 23:26 2436

[原创]KCTF2021签到题(身在何处)writeup

2021-11-16 23:26
2436

寻找入口点

打开kctf2021.exe,输入name为KCTF,序列号输入123456,如图1所示,得到提示字符串Wrong
Serial!

 

 

图1 kctf2021.exe主界面

 

使用IDA加载程序,通过字符串搜索定位到关键代码位置,如图2
所示。可以看到程序通过GetDlgItemTextA获取name和serial number。

 

 

图2 待逆向分析的关键代码(已经过重命名)

基本条件

通过图2我们可以知道输入要满足以下条件(在没有调试和重命名的情况下)

  • 输入的name长度大于0

  • 输入的序列号为阿拉伯数字,且长度小于10

调试分析

通过提供的“用户名 : 01F845C5B7C52E56 序列号 : 653259165”去调试

 

sub_11B1260通过根据输入的name和name的长度nameLen计算出v2,通过提供的“用户名 :
01F845C5B7C52E56 序列号 : 653259165”去调试,可以发现

 

最终buf的值必须为52a1ed5a,通过itoh函数发现buf正好是v2和v3异或之后再转换成的字符串,用python验证如图3所示。其中v3来自是将序列号字符串转换成整数的结果。

 

 

图3 计算验证

 

我们需要通过调试,让程序帮我们计算出用户名为KCTF的v2值,KCTF的v2为0x5EE54F4C,如图4所示

 

 

图4 动态调试获取KCTF的v2值

 

所以序列号为0x52a1ed5a \^ 0x5EE54F4C = 205824534

 


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//