[WUSTCTF2020]level4

用IDA打开 主函数只有简单几行

直接运行

一共是有三种遍历方式 第三种没给出 推测应该就是flag了 再结合输出的提示–左右

应该是二叉树的三种遍历方式 再查看type1、2代码

type1:中序遍历(左中右)

type2:后序遍历(左右中)

那么type3应该就是先序遍历了

写脚本解出

#include<iostream>  
using namespace std;  

char post[] = "20f0Th{2tsIS_icArE}e7__w"; // 后序遍历结果
char mid[] = "2f0t02T{hcsiI_SwA__r7Ee}"; // 中序遍历结果
void pre(int root, int start, int end) 
{  
    if(start > end)   
        return ;  
    int i = start;  
    while(i < end && mid[i] != post[root]) i++;  //定位根在中序的位置
    cout<<mid[i];
    pre(root - 1 - (end - i), start, i - 1);  //递归处理左子树
    pre(root - 1, i + 1, end);  //递归处理右子树
    
}  

int main() 
{  
    pre(24, 0, 24);  
    return 0;  
}  

wctf2020{This_IS_A_7reE}

发表评论

您的电子邮箱地址不会被公开。