
分析主程序发现enflag就是最终的加密后做对比结果,所以我们要拿到这个值

双击进入发现是dd offset aD 定义的内容要跳转到aD里面,就是此时aD的内容就是enflag的内容

再双击aD内容,发现一串字符串,又ascii码和十六进制组成的。


最后的ascii转十六进制数据0x28,0x15,0x3A,0x1B,0x44,0x14,0x06
分析主程序,发现是将第7个也就是一开始就异或{,然后接着就是后面的内容异或,所以我们要起步就异或{,将moectf{写到异或的里面开始异或,这样就可以出后面的值了。

上代码
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
char ks[] = {0x28,0x15,0x3A,0x1B,0x44,0x14,0x06};
char flag[] = "moectf{";
for (int i = 0; i <= 6; i++) {
printf("%c", flag[i]^ks[i]);
}
}
得到flag

moectf{Ez_x0r}