盒子
盒子
文章目录
  1. Reverse

Reverse-1

Reverse

Linux下发现是mach-0文件,丢进IDA中F5打开得到主函数得关键函数:

tu1

所以我们只要得知v2变换后的值就可以拿到flag,key的值在内存中可以直接看到,即start函数的地址的十六进制值与sub_100000C90函数的地址的十六进制值相减再右移两个字符的值与key[0]的值亦或。

tu2

tu3

然后根据主函数的方程写脚本文件即可拿到flag,但是这题目中我发现定义的s的最大长度只有8,但是复制给s的值超过了8,如果只给s赋8长度只能得到一半的flag,所以我并没有弄明白其中的原因。

tu4

  • 2.Re

丢进IDA,可以看到主函数:

tu5

可以看到把那一串字符串赋值给了s,然后再用s进行亦或运算得到flag
所以可以直接写脚本拿到flag

tu6

  • 3.Re.exe

先运行看看,然后丢进IDA得到主函数

tu7

我们可以分析得到,先输入一个值赋值给v14,而后v14与0x80进行与运算重新再赋值给v14,再将v14的值与v4相比较,如果正确输出good,相反则输出wrong。接下来我们所要做的就是得知写在内存中的v4的值,v4的值就是flag。我们在关键语句中加上断点:

tu8

加上断点之后进行调试,F9:

tu9

随便输入一个值,我们输入”hello”,回车:

tu10

一路F7,之后我们可以发现我们所输入的hello的值存储在28h当中,而下面就是strcmp对比函数,我们可以推测得到上面的14h中存储的就是我们所要找的v4的值

tu11

tu12

tu13

这样我们就得到了v4的值,然后根据主函数中的关键函数写反函数,得到脚本拿flag为:

tu14

支持一下
扫一扫,支持v1nke
  • 微信扫一扫
  • 支付宝扫一扫