提示是你会唱歌么,一脸懵逼
打开可以看到是一个elf文件,我自己转到了虚拟机里面去下载
下载下来后想直接运行一下,说我权限不够,也不明白是为什么,直接chmod +x
拖进IDA看一下吧,靠字符串定位(Your password is tjctf{)
也不知道是不是彩蛋,我们看看歌词吧
Do you think I don't understand? 是的,我的确没看懂………………
看看还有没有别的歌词,看到了you are my best friends in the world,搜一下是什么破歌吧
就是题目,歌词是乱序的
直接拖到最底下,分析一下吧,如下图
我喜欢从下往上倒着看,先是一个while循环,知道v283的值就可以解出来了
我们可以看到v283的初始值是0,如果不参与上面的改变,while循环就执行不了
然后看一下汇编代码
我们可以看到在401890程序将第一句歌词的地址存放到了[rbp-8]处,其实挺好定位的,你在伪C代码的最后一句赋值处按下TAB键就可以帮你定位了,然后跟着条约语句跳转,如下,你要是是在不信,你搜歌词去(xiao)
其实我的汇编也不是很熟练,但是不难看出程序将一个字符赋值给了[rbp-11h],判断是否为0,然后再跳转
如上就是到了换个词的地方,其实就是为了求出rdx,带着大家算一个吧
第二句歌词是 I should've told you,地址在400FCB
0x2290+rdx*8=0x23a0
然后rdx+65-32逆回去等于'C',所以第一个输入的是C
以此类推得到输入的字符需要输入的字符是CBDABCADBCCABBABBABACBCCABDADBABABB(其实还OK,每次判断就是4句,对应着ABCD)
这里可能在IDA里面看起来是很乱的,每一句歌词都割裂的比较乱,推荐一个软件:https://github.com/eteran/edb-debugger
这个软件你可以理解为64位下的OD
给个我分析的链接好了:https://blog.csdn.net/qq_42192672/article/details/82937667
带着参数运行就好了