查看主函数
看到遍历 Str2,如果字符为 'o',则替换为 '0'
int __fastcall main_0(int argc, const char **argv, const char **envp)
{
  char *v3; // 指向 v7 的指针
  __int64 i; // 循环计数器
  size_t v5; // 存储 Str2 的长度
  char v7; // 存储输入字符
  int j; // 循环计数器和索引
  char Str1[224]; // 存储输入的 flag
  __int64 v10; // 用于循环计数器
  v3 = &v7;
  
  // 将 -858993460 写入 v7 的地址,循环 82 次
  for ( i = 82i64; i; --i )
  {
    *(_DWORD *)v3 = -858993460;
    v3 += 4;
  }
  // 遍历 Str2,如果字符为 'o',则替换为 '0'
  for ( j = 0; ; ++j )
  {
    v10 = j;
    if ( j > j_strlen(Str2) )
      break;
    if ( Str2[j] == 111 )
      Str2[j] = 48;
  }
  // 提示用户输入标志
  sub_1400111D1("input the flag:");
  // 读取用户输入的最多 20 个字符到 Str1 中
  sub_14001128F("%20s", Str1);
  v5 = j_strlen(Str2);
  // 比较 Str1 和 Str2 的前 v5 个字符
  if ( !strncmp(Str1, Str2, v5) )
    sub_1400111D1("this is the right flag!\n");
  else
    sub_1400111D1("wrong flag\n");
  return 0;
}一进函数看到字符串

解题的思路就是把字符串中的o改成0
得到flag
NSSCTF{hell0_w0rld}



















