0


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] 时,也就不会注意到这个点。所以打好基础是十分必要的,虽然汇编看起来就挺难的,但是真正去了解的时候发现还是很有趣,而且对计算机的内部也更加了解,增加了日常探(吹)讨(牛)的素材,收获一批崇拜的目光。

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

本文转载自: https://blog.csdn.net/weixin_44573809/article/details/128330058
版权归原作者 Sombra_Olivia 所有, 如有侵权,请联系我们删除。

“BUUCTF中的reverse2”的评论:

还没有评论