攻防世界_Re_新手区_no-strings-attached

主函数:

int __cdecl main(int argc, const char **argv, const char **envp)
{
  setlocale(6, &locale);
  banner();
  prompt_authentication();
  authenticate();
  return 0;
}

只有第四个函数有点东西:

void authenticate()
{
  wchar_t ws[8192]; // [esp+1Ch] [ebp-800Ch] BYREF
  wchar_t *s2; // [esp+801Ch] [ebp-Ch]

  s2 = (wchar_t *)decrypt((wchar_t *)&s, (wchar_t *)&dword_8048A90);
  if ( fgetws(ws, 0x2000, stdin) )
  {
    ws[wcslen(ws) - 1] = 0;
    if ( !wcscmp(ws, s2) )
      wprintf(&unk_8048B44);
    else
      wprintf(&unk_8048BA4);
  }
  free(s2);
}

有一个decrypt函数,应该是对字符串加密的

使用GDB动调:

先在decrypt函数断点:

 

 但是这里运行的时候出现了点小问题:

 

 提示权限不够

这里只需要输入:

chmod 777 文件名

就可以继续运行:

 

 然后输入n单步运行:

 

 然后查看eax寄存器的值

x/5sw $eax
s 表示字符串形式
5 表示5行

 

 flag:

9447{you_are_an_international_mystery}

posted @ 2022-04-18 20:28  Luccky  阅读(36)  评论(0编辑  收藏  举报