【WhaleCTF逆向题】第二期入门语言【初级】writeup

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xiangshangbashaonian/article/details/82860388

题目信息:

这道题目有两种做法

0x01:常规逆向

0x02:是利用 使用Angr符号执行来求解CTF逆向题

简单记录一下0x01的做法

载入x64IDA   直接就可以看到主函数

直接就可以发现sub_4006FD这个函数就是关键

双击进入

F5

得到伪代码如下

signed __int64 __fastcall sub_4006FD(__int64 a1)
{
  signed int i; // [rsp+14h] [rbp-24h]
  const char *v3; // [rsp+18h] [rbp-20h]
  char *v4; // [rsp+20h] [rbp-18h]
  char *v5; // [rsp+28h] [rbp-10h]

  v3 = "Dufhbmf";
  v4 = "pG`imos";
  v5 = "ewUglpt";
  for ( i = 0; i <= 11; ++i )
  {
    if ( (&v3)[i % 3][2 * (i / 3)] - *(i + a1) != 1 )
      return 1LL;
  }
  return 0LL;
}

一个for循环  对三个串(以二维数组的形式)进行操作  就可以得到密码

在解之前  先把三个串转成ascii

b = [[68, 117, 102, 104, 98, 109, 102],
     [112, 71, 96, 105, 109, 111, 115],
     [101, 119, 85, 103, 108, 112, 116]]
flag = ''
for i in range(12):
    flag += chr(b[i % 3][2* (i / 3)] -1)
    print(flag)

运行就可以得到flag

猜你喜欢

转载自blog.csdn.net/xiangshangbashaonian/article/details/82860388
今日推荐