BUUCTF Reverse2

Reverse2

在IDA中通过搜索定位到此图表
image
选中后F5生成伪代码

点击查看代码
    for (j = 0; ; ++j)
    {
        v8 = j;
        v2 = j_strlen(Str2);
        if (v8 > v2)
            break;
        if (Str2[j] == 111)
            Str2[j] = 48;
    }

ASCII中111为'o';48为'0'

可以发现,它对我们输入的 str1 与程序里的 str2 做比较,str2 是{hello_world},而在开始前会将 str2 中的字母 o 替换为数字 0,于是得到 flag

点击查看代码
if (Str2[j] == 111)
            Str2[j] = 48;
    }
    sub_1400111D1("input the flag:");
    sub_14001128F("%20s", &Str1);
    v3 = j_strlen(Str2);
    if (!strncmp(&Str1, Str2, v3))
        sub_1400111D1("this is the right flag!\n");
    else
        sub_1400111D1("wrong flag\n");
    sub_14001113B(&v5, &unk_140019D00);
    return 0i64;
}
即可得到flag{hell0_w0rld}
posted @ 2022-12-06 17:01  月上藤萝  阅读(108)  评论(0)    收藏  举报