查看主函数
看到遍历 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}