没有加壳,打开
有两个关键函数,sub-4010f0和sub-401050
看到两个’\n’,’\t’猜想这个sub-4010f0函数应该是进行输入和排除掉’\n’,’\t’
再看sub-401050:
sub_401050函数就是将字符串逆向做了异或操作之后,与已知字符串byte_403000对比。
关键是这里的v4
从代码不好直接求出来,动调查看
这里的a1就是v4,可以看到是4
脚本:
#include <stdio.h>
int main()
{
int i;
char v4=4;
char a[] =
{
0x0D, 0x26, 0x49, 0x45, 0x2A, 0x17, 0x78, 0x44, 0x2B, 0x6C,
0x5D, 0x5E, 0x45, 0x12, 0x2F, 0x17, 0x2B, 0x44, 0x6F, 0x6E,
0x56, 0x09, 0x5F, 0x45, 0x47, 0x73, 0x26, 0x0A, 0x0D, 0x13,
0x17, 0x48, 0x42, 0x01, 0x40, 0x4D, 0x0C, 0x02, 0x69, 0x00
};
char b[0x27];
for (i=0x27;i>=0;i--)
{
b[i]=v4^a[i];
v4=b[i];
}
for(i=0;i<0x27;i++)
{
printf("%c",b[i]);
}
}
得到flag: flag{R_y0u_H0t_3n0ugH_t0_1gn1t3@flare-on.com}