polarctf逆向加加减减
上代码
`int __cdecl main_0(int argc, const char **argv, const char **envp)
{
char v4; // [esp+0h] [ebp-154h]
char v5; // [esp+0h] [ebp-154h]
size_t i; // [esp+D0h] [ebp-84h]
char Str[60]; // [esp+DCh] [ebp-78h] BYREF
char Str2[39]; // [esp+118h] [ebp-3Ch] BYREF
int v9; // [esp+13Fh] [ebp-15h]
int v10; // [esp+143h] [ebp-11h]
__int16 v11; // [esp+147h] [ebp-Dh]
char v12; // [esp+149h] [ebp-Bh]
__CheckForDebuggerJustMyCode(&unk_41C009);
strcpy(Str2, "ekfz5123086/ce7ac7/4a816/87bb28a5|");
v9 = 0;
v10 = 0;
v11 = 0;
v12 = 0;
j_memset(Str, 0, 0x32u);
sub_41104B("input\r\n", v4);
sub_4110AA("%s", (char)Str);
for ( i = 0; i < j_strlen(Str); ++i )
--Str[i];
if ( !j_strcmp(Str, Str2) )
sub_41104B("success\r\n", v5);
else
sub_41104B("sorry\r\n", v5);
return 0;
} sub_41104B("input\r\n", v4);这里面的input是提示输入 sub_4110AA("%s", (char)Str);这里面的%s是从键盘读入 接下来的循环给每个字符ascii码减一,与最终字符串对比,由此可以逆向出用户输入 str = "ekfz5123086/ce7ac7/4a816/87b`b28a5|"
result = ''.join(chr(ord(c) + 1) for c in str)
print(result)
得到flag
