roger 发表于 2020-4-24 00:49:24

xuenixiang_2019_re_Reverse1

File看文件信息, 拖入ida打开,找到程序入口,main函数,和关键函数strcmp(),encode() 发现是字符串s和enflag进行比较,一致则输出flag,而s是经过encode后的字符,我们先查看enflag() 将前三个字符 转化为ascii ,然后存放到一个数组里 得到了加密后的字符串, 接着查看encode()函数,看看它的加密算法 加密的过程是 将用户输入的字符串,拆分成了3组,每组进行异或和加减运算之后 累计到一个变量里,将这个变量跟enflag做比较。 所以写一个decode:nflag=
v3=[]
v4=[]
v5=[]
v7=18
flag=''
for i in range(0,len(enflag),3):
    v5.append((enflag^v7)-6)
    v4.append((enflag^v7)+6)
    v3.append(enflag^v7^6)

for j in range(v7/3):
    flag+=chr(v5)+chr(v4)+chr(v3)
    print flag
flag{w0wtqly0uW1n}

wmp1014 发表于 2020-6-8 15:36:17

能不能把题目也上传
页: [1]
查看完整版本: xuenixiang_2019_re_Reverse1