ida打开,进入main函数
有一个关键函数,和一个关键比较
先进入关键函数里面
最开始有一个sub_401000()函数,进入后
感觉有点像base64加密,然后这个函数是变换base64的码表,写脚本将变换后的码表求出来
#include <stdio.h>
int main()
{
char b[]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
char c;
int i=6;
printf("sss\n");
do
{
c=b[i+10];
b[i+10]=b[i];
b[i++]=c;
}
while(i<15);
printf("%s",b);
}
得到码表:ABCDEFQRSTUVWXYPGHIJKLMNOZabcdefghijklmnopqrstuvwxyz0123456789+/
然后注意到返回时的函数sub_401030()
很明显是一个大小写互换的函数
所以我们可以通过main函数里的判断条件来逆推flag
比较数据为:zMXHz3TIgnxLxJhFAdtZn2fFk3lYCrtPC2l9
先转换为大写:ZmxhZ3tiGNXlXjHfaDTzN2FfK3LycRTpc2L9
然后根据之前的码表解密
flag为:flag{bAse64_h2s_a_Surprise}