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{}"。