点击此处获得更好的阅读体验
WriteUp来源
题目考点
- MIPS逆向
解题思路
题目分析
这道题是个去了符号表的mips程序
首先建议使用ghidra和ida联合分析
使用的知识点为
strcmp函数,只对比第二个字符串的长度,也就是代表,只对比前面的字符串
strstr,寻找第一个出现字符串的位置
kmp算法,搜索字符串,返回位置,但是比strstr搜索快
test函数,一个简单的异或算法...
过程
首先是strcmp函数,解出对应的第一段d0g3wi11
其次是发现,这里存在寻找m0r3的字符串,并且因为count计数是两次,所以直接记录下来
然后kmp算法,寻找了11b3,和b3tt3r这两个字符串
最后test函数解出来就是
1 | key = "o3v6d4|}9y" |
m0r3b3tt3r
最后根据重复的位置,把字符串拼接完成:
d0g3wi11b3m0r3m0r3b3tt3r
最后输入了这个字符串,就会输出:
d0gewillbem0rem0rebetter
这就是最后的flag了
Flag
1 | d0gewillbem0rem0rebetter |