BUUCTF Reverse/[WUSTCTF2020]level4
先看文件信息,没有加壳
IDA打开找到主函数,看描述说这是一个数据结构的算法,而且有left以及rleft,这不就是数据结构里面的左子树和右子树么
跟进init
看一下这两个输出
运行一下
这type1和type2就是中序遍历和后序遍历没跑,那么猜测type3就是前序遍历了,找到这个已知中序遍历和后序遍历求前序遍历 改下脚
脚本
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
char post[] = "20f0Th{2tsIS_icArE}e7__w";
char mid[] = "2f0t02T{hcsiI_SwA__r7Ee}";
void f(int root,int start,int end)
{
if(start > end)
return ;
int i = start;
while(i < end && mid[i] != post[root])
i++;
printf("%c",mid[i]);
f(root - 1-(end - i),start,i - 1);
f(root-1,i + 1,end);
}
int main()
{
f(24,0,24);
return 0;
}
运行结果
flag{This_IS_A_7reE}
|