reverse1

题目链接:reverse1

下载附件后,使用 IDA 打开,定位到 main 函数,如下。

主要留意如下代码。

  for ( j = 0; ; ++j )
  {
    v10 = j;
    if ( j > j_strlen(Str2) )
      break;
    if ( Str2[j] == 'o' )
      Str2[j] = '0';
  }
  sub_1400111D1("input the flag:");
  sub_14001128F("%20s", Str1);
  v5 = j_strlen(Str2);
  if ( !strncmp(Str1, Str2, v5) )
    sub_1400111D1("this is the right flag!\n");
  else
    sub_1400111D1("wrong flag\n");
  return 0;
}

可以看到,程序将 Str2 中的字符 "o",转化为 "0" 后,与用户的输入进行比对,若一致,则通过检测。

因此,直接将 Str2 中的字符 "o",转化为 "0",即可获得 flag。

注意,Buuoj 中需要将获得的 flag 加上 "flag{}"。

posted @ 2024-11-11 00:19  imtaieee  阅读(5)  评论(0编辑  收藏  举报