reverse_2

发布时间 2023-05-01 09:45:08作者: TFOREVERY

查壳(查位数)

64位,拖进IDA

方法依旧,F5看伪代码

int __cdecl main(int argc, const char **argv, const char **envp)
{
  int result; // eax
  int stat_loc; // [rsp+4h] [rbp-3Ch] BYREF
  int i; // [rsp+8h] [rbp-38h]
  __pid_t pid; // [rsp+Ch] [rbp-34h]
  char s2[24]; // [rsp+10h] [rbp-30h] BYREF
  unsigned __int64 v8; // [rsp+28h] [rbp-18h]

  v8 = __readfsqword(0x28u);
  pid = fork();
  if ( pid )
  {
    waitpid(pid, &stat_loc, 0);
  }
  else
  {
    for ( i = 0; i <= strlen(&flag); ++i )
    {
      if ( *(&flag + i) == 105 || *(&flag + i) == 114 )
        *(&flag + i) = 49;
    }
  }
  printf("input the flag:");
  __isoc99_scanf("%20s", s2);
  if ( !strcmp(&flag, s2) )
    result = puts("this is the right flag!");
  else
    result = puts("wrong flag!");
  return result;
}

先看看flag是啥,双击flag

发现少了一个 { ,是不是还有什么隐藏的flag没写入,其实不然7Bh就是 { 转化一下就能看到了

所以flag

在比较字符串前我们还能看到flag有转化

先看在干嘛

将所有'i','r'全部转化为 1

所以flag{hack1ng_fo1_fun}收工