-
-
[原创]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
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!
赞赏
他的文章
看原图
赞赏
雪币:
留言: