BUUCTF 新年快乐 RE

这题主要考查查壳与去壳
首先用 Die 查看文件信息
img
可以看到文件是32位的且有一个UPX壳,那接下来就是脱壳操作
img
放入ida反编译得到main函数伪代码

int __cdecl main(int argc, const char **argv, const char **envp)
{
  int result; // eax
  char Str2[14]; // [esp+12h] [ebp-3Ah] BYREF
  __int16 Str1; // [esp+20h] [ebp-2Ch] BYREF
  _BYTE v6[30]; // [esp+22h] [ebp-2Ah] BYREF

  __main();
  strcpy(Str2, "HappyNewYear!");
  Str1 = 0;
  memset(v6, 0, sizeof(v6));
  printf("please input the true flag:");
  scanf("%s", &Str1);
  if ( !strncmp((const char *)&Str1, Str2, strlen(Str2)) )
    result = puts("this is true flag!");
  else
    result = puts("wrong!");
  return result;
}

简单阅读可知flag即为
flag{HappyNewYear!}
另外我们也可以手动脱壳
这篇博文写的很详细

posted @ 2023-01-13 00:15  Tree_24  阅读(77)  评论(0编辑  收藏  举报