【攻防世界】Reverse——Reversing-x64Elf-100 writeup

发布时间:2024年01月08日

重点是理解下面的代码:把v3是一个二维数组,每个数组元素是一个字符。循环体内按一定规则取一个字符减去输入的字符串中的某个字符的值,若不为1,则失败。

__int64 __fastcall sub_4006FD(__int64 a1)
{
  int i; // [rsp+14h] [rbp-24h]
  __int64 v3[4]; // [rsp+18h] [rbp-20h]

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

用下面的python代码取得flag

v3 = ["Dufhbmf", "pG`imos", "ewUglpt"]
flag = ''
for i in range(12):
     flag += chr(ord(v3[i%3][2*(i//3)]) - 1)

print(flag)

文章来源:https://blog.csdn.net/2301_77295404/article/details/135341825
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。