18.10.4 实验吧----whatamitoyou

提示是你会唱歌么,一脸懵逼

打开可以看到是一个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

带着参数运行就好了

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值