[SWPUCTF 2021 新生赛]re2
这道题有两个答案
先看题目
查壳
无壳,64位
丢入ida64,找main函数,F5看伪代码
点击查看代码
int __cdecl main(int argc, const char **argv, const char **envp)
{
char Str2[64]; // [rsp+20h] [rbp-90h] BYREF
char Str[68]; // [rsp+60h] [rbp-50h] BYREF
int v7; // [rsp+A8h] [rbp-8h]
int i; // [rsp+ACh] [rbp-4h]
_main();
strcpy(Str2, "ylqq]aycqyp{");
printf(&Format);
gets(Str); // str为flag
v7 = strlen(Str);
for ( i = 0; i < v7; ++i )
{
if ( (Str[i] <= 96 || Str[i] > 98) && (Str[i] <= 64 || Str[i] > 66) )
Str[i] -= 2;
else
Str[i] += 24;
}
if ( strcmp(Str, Str2) )
printf(&byte_404024);
else
printf(aBingo);
system("pause");
return 0;
}
源码
点击查看代码
flag = ''
str2 = 'ylqq]aycqyp{'
for i in range(len(str2)):
if (ord(str2[i]) <= 94 or ord(str2[i]) > 96) and (ord(str2[i]) <= 64 or ord(str2[i]) > 66):
flag += chr(ord(str2[i])+2)
else:
flag += chr(ord(str2[i])-24)
print(flag)
flag:{nss_c{es{r}
但提交不正确,看别人的wp才知道两个答案都对,但{nss_caesar}
能提交
不过这不重要,理解作者出题意向就行了