攻防世界-reverse-no-strings-attached

题目描述

菜鸡听说有的程序运行就能拿Flag?
下载文件后,看下文件信息,是一个可执行程序
在这里插入图片描述

思路分析

逆向出代码,发现关键点在这里
攻防世界-reverse-no-strings-attached_第1张图片
这里有个解密函数,解密出v2和我们的输入v1进行对比,能够匹配上就OK,说明这个v2就是我们需要的flag。

继续看这个解密函数,函数中并没有给出密文是多少,继续往前追溯就更困难了
攻防世界-reverse-no-strings-attached_第2张图片
因此,这里既然明确v2是我们需要的flag,那么其实没必要去弄清楚并复现该解密过程,直接调试该程序,查看堆栈中v2的值即可。

解题过程

在这个位置打断点
攻防世界-reverse-no-strings-attached_第3张图片

进入调试模式,查看局部变量v2所在的地址
在这里插入图片描述
堆栈中找到该地址
攻防世界-reverse-no-strings-attached_第4张图片
直接查看地址内容即可,可以看到内容为9447{you_are_an_international_mystery}

总结

当flag会在程序执行过程中生成时,此时没必要去完完整整的重现程序(难度比较大,当然可以用于练习),直接调试该程序,查看运行时变量的值即可,这样会大大简化难度

你可能感兴趣的:(安全)