BUUCTF中的reverse2

0x00 前言

        由于近日疫情比较严重,所以还是少出门,少聚集,多看书,多学习。今天来记录一下reverse2的解题过程。

0x01 正题

        首先,拿到题目后,还是要用PE软件查一下软件的基本情况。

        根据PE信息可以看到,该软件是用ELF写的,64位文件。

        因此,采用IDA 64打开。 

        通过IDA生成的流程图可以找到关键字:FLAG。(依然觉得IDA很强大。)

        找到关键字之后用F5查看伪代码。

 

        通过按“R键”可知:105 = 'i'; 114 = 'r'; 49 = '1'。分析第25-26行,比较flag与s2的字符串,才能得到“this is thw right flag!”。那么问题来了,Flag是什么???

        重新回到流程图。

         观察右侧流程发现flag被放入了eax寄存器中,于是双击进去观察一下。

        现在可以看到flag有一部分是“hacking_for_fun}”,为什么说是一部分呢?因为题目中说flag的格式应该是“flag{}”,因此合理推断,flag至少应该是“flag{hacking_for_fun}”,再次使用“R键”可知,78h = {;

        然后就可以美滋滋的提交flag了。

        氮素!BUU说这个flag是错的!!!!!

 

        于是我又往上看了一下,原来是flag中的“i”和“r”被替换成了“1”,那么最终的flag就是:flag{hack1ng_fo1_fun}。

0x02 总结

        最近在补汇编的知识,不求自己能用汇编去编程,但是最起码也得能看懂,不然老用F5多掉价嘛。像大佬们直接看汇编代码就能知道软件是怎样运行的,不由得从心里敬佩。拿本题来讲,如果不懂点汇编,可能看到 movzx   eax, flag[rax] 时,也就不会注意到这个点。所以打好基础是十分必要的,虽然汇编看起来就挺难的,但是真正去了解的时候发现还是很有趣,而且对计算机的内部也更加了解,增加了日常探(吹)讨(牛)的素材,收获一批崇拜的目光。

        扯皮归扯皮,但是技术增涨总归是一件开心的事情,希望日后能更进一步,追上大佬们的脚步。

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值