使用IDA打开reverse_1.exe
IDA打开之后,无明显特征。shift+F12查看字符串,发现flag提示
跳转过去之后,按X查看交叉引用
通过流程图,发现用于判断是否正确获取flag的语句为汇编指令test,eax,eax,然后通过jz指令跳转到flag
直接F5查看伪代码
可以看到this is the right flag字符,说明直接满足if条件即可得到正确的flag
strncmp(&Str1, Str2, v3)用于比较str1与str2字符串,相等时返回0。
!strncmp()即需要满足str1=str2
双击,查看str2字符串
在比较之前存在for循环,该循环的作用是将str2字符串中的字母o改成数字0
因此得出flag为{hell0_w0rld}
调试reverse_1.exe,搜索字符串
点击跳转到input th flag处。
此处for循环,用于遍历字符串hello_world
当eax等于字母o时,替换字母o为数字0
00007FF7DE461970处下断点
第一条指令是将输入的字符赋值给rdx
第二条指令是将替换过的字符串hell0_w0rld赋值给rcx
通过strncmp()函数比较两个字符串,相等时返回0
再通过test指令以及je指令来进行条件判断
获取到flag为{hell0_w0lrd}
本次CTF题目属于入门题型,之所以写这边文章的原因是由于网上的解题思路思路都是使用IDA伪代码进行解答的,因此本文本着学习动态调试的目的去解题。
本次CTF题目属于入门题型,之所以写这边文章的原因是由于网上的解题思路思路都是使用IDA伪代码进行解答的,因此本文本着学习动态调试的目的去解题。
lea rdx,qword ptr ds:[
7FF7DE46C000
]
lea rcx,qword ptr ss:[rbp
+
28
]
lea rdx,qword ptr ds:[
7FF7DE46C000
]
lea rcx,qword ptr ss:[rbp
+
28
]
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)