-
-
kctf2021 签到题(思路)
-
发表于: 2021-11-16 12:31 2255
-
首先下载题目阅读,给了一个正确的用户名和序列号,还指定了我们要逆出序列号的用户名
1.先输入真码走一遍流程
来到代码节搜索字符串,可以搜到success的字符串,双击定位到返回窗口
然后找到段首,下个断点,运行程序,输入真码,断在了段首的位置
接下来就是分析了,其中有几个比较关键的call(这个call是对用户名进行了操作)
结合着ida看了下这个call,其实不重要,我们只要记录下他的返回值就行
接着看这个call(这个call是对序列号进行了操作)
下面有个关键的xor eax,ebx
eax就是这个call的返回值 ,ebx存着上面让记录那个call的返回值
然后真码xor完之后 == 52a1ed5a
再下面的call对于"52a1eb5a",返回的还是原值
最后这个call决定是否成功
这里将"52a1ed5a" push 入栈 然后调用call 比较是否等于0x13B88C77
这里发现只要push的是"52a1ed5a"就会成功
2.所以 对用户名操作的call xor 对序列号操作的call == 52a1ed5a 就可以成功
我们记录 对KCTF操作完的返回值 == 5EE54F4C
此时已经知道两个xor的操作数 求第三个
之后分析了一下对序列号操作的call其实就是将10进制转换为16进制
NAME=KCTF
Serial = 205824534
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!
赞赏
看原图
赞赏
雪币:
留言: