我们下载 后打开 用IDA打开把
接着 我们直接 shift + F12 切出字符串窗口 搜索flag
也可以直接 ctrl + F 搜索
找到这个 main函数中的 flag
之后 对着函数位置 按 F5 进行反编译 得到 可读界面
__int64 __cdecl main_0()
{
size_t v0; // eax
const char *v1; // eax
size_t v2; // eax
int v3; // edx
__int64 v4; // ST08_8
char v6; // [esp+0h] [ebp-188h]
char v7; // [esp+0h] [ebp-188h]
signed int j; // [esp+DCh] [ebp-ACh]
signed int i; // [esp+E8h] [ebp-A0h]
signed int v10; // [esp+E8h] [ebp-A0h]
char Dest[108]; // [esp+F4h] [ebp-94h]
char Str; // [esp+160h] [ebp-28h]
char v13; // [esp+17Ch] [ebp-Ch]
for ( i = 0; i < 100; ++i )
{
if ( (unsigned int)i >= 0x64 )
j____report_rangecheckfailure();
Dest[i] = 0;
}
sub_41132F((int)"please enter the flag:", v6);
sub_411375("%20s", &Str);
v0 = j_strlen(&Str);
v1 = (const char *)sub_4110BE(&Str, v0, &v13);
strncpy(Dest, v1, 0x28u);
v10 = j_strlen(Dest);
for ( j = 0; j < v10; ++j )
Dest[j] += j;
v2 = j_strlen(Dest);
if ( !strncmp(Dest, Str2, v2) )
sub_41132F((int)"rigth flag!\n", v7);
else
sub_41132F((int)"wrong flag!\n", v7);
HIDWORD(v4) = v3;
LODWORD(v4) = 0;
return v4;
}
发现需要比较的 str2 字符串
那我们找到他看看
扫描二维码关注公众号,回复:
11002314 查看本文章
那么就是对他进行分析了
e3nifIH9b_C@n@dH
j=0 ++j 从0开始 +0 +1 +3 依次增多
所以 我们需要对字符串的ascii码 值进行 -0 -1 -2 依次增多
那我们用c语言对他来完成吧 !!!
ASCII码 依次 -i=0 i++
#include<stdio.h>
#include<string.h>
int main(){
int i;
char a[100];
printf("请输入字符串:\n");
scanf("%s",a);
printf("解密得:\n");
for(i=0;i<strlen(a);i++){
a[i]=a[i]-i;
printf("%c",a[i]);
}
}
得到
e2lfbDB2ZV95b3V9
发现是 base64加密的
直接解密得到
{i_l0ve_you}
也可以直接写个python脚本来实现
import base64
a='e3nifIH9b_C@n@dH'
flag=''
for i in range(len(a)):
flag+=chr(ord(a[i])-i)
print(base64.b64decode(flag))