[WUSTCTF2020] level4
шаг
- elf, попробуйте запустить виртуальную машину, чтобы увидеть общую ситуацию,
Typing....Struct.....char....*left....*right............emmmmm...OK!
угадайте, что существует двоичное дерево в соответствии с символами подсказки.
Я вижу, что строки в type1 и type2 немного похожи на флаги, но порядок нарушен - 64 ida Загрузка
type1 (byte_601290), порядок обхода двоичного дерева: 2f0t02T} {hcsiI_SwA__r7Ee
20f0Th} {2tsIS_icArE e7__w: Type2 (byte_601290), последовательность обхода
двоичного дерева в двоичном дереве может быть представлена до, после понимания принципов дерева Определиться Заказано. Руководство в начале, в середине написания, я нашел слишком много и изменил сценарий
Источник Python3 exp
: https://blog.csdn.net/weixin_41287060/article/details/99400963
#使用中序后序求前序遍历
class TreeNode:
def __init__(self, x):
self.val = x
self.left = None
self.right = None
class Solution:
def reConstructBinaryTree(self, post, tin):
if len(post) == 0:
return None
root = TreeNode(post[-1])
TinIndex = tin.index(post[-1])
root.left = self.reConstructBinaryTree(post[0:TinIndex], tin[0:TinIndex])
root.right = self.reConstructBinaryTree(post[TinIndex:len(post) - 1], tin[TinIndex + 1:])
return root
def PreTraversal(self, root):
if root != None:
print(root.val,end="")
self.PreTraversal(root.left)
self.PreTraversal(root.right)
strm="2f0t02T{hcsiI_SwA__r7Ee}"
stre="20f0Th{2tsIS_icArE}e7__w"
post = list(stre)#后序
tin = list(strm)#中序
S = Solution()
root = S.reConstructBinaryTree(post, tin)
S.PreTraversal(root)
флаг {This_IS_A_7reE}