刘功瑞的博客

有一天你突然惊醒,发现这一切,都只不过是一场梦。

攻防世界 XCTF Reverse crazy Writeup

image.png


用ida打开,头都大了,这么多代码

image.png

耐心看了之后,发现想要得到flag,就要知道v23的值

image.png

v23的值其实就几个算法,func1 func2 func3都是混淆用的,没实际意义

image.png

主要看 HighTemplar ,calculate ,getSerial 这三个函数

HighTemplar初始化了 a1+80位置的变量值为327a6c4304ad5938eaf0efb6cc3e53dc

image.png


calculate 对a1+16地址的值做一些异或计算,a1+16就是我们输入的值

image.png

getSerial对我们输入的值和a1+80的值作比较

image.png

只需要逆着推回去就可以得到flag

str = '327a6c4304ad5938eaf0efb6cc3e53dc'
arr = []
for i in str:
    arr.append((ord(i) - 11) ^ 0x13)
arr2 = []
flag = ''
for i in arr:
    arr2.append((i - 23) ^ 0x50)
    flag += chr((i - 23) ^ 0x50)

print arr2
print flag
#flag{tMx~qdstOs~crvtwb~aOba}qddtbrtcd}


发表评论:

Powered By Z-BlogPHP 1.5.2 Zero

Copyright www.liugongrui.com.All Rights Reserved.