前言
继续ctf的旅程
攻防世界Reverse高手进阶区的3分题
本篇是EASYHOOK的writeup
发现攻防世界的题目分数是动态的
就仅以做题时的分数为准了
解题过程
PE查壳
扔进IDA
sub_401370显然是个输出
看sub_401220和sub_401240
发现加密函数其实是401000
dic=[0x61, 0x6A, 0x79, 0x67, 0x6B, 0x46, 0x6D, 0x2E, 0x7F, 0x5F, 0x7E, 0x2D,
0x53, 0x56, 0x7B, 0x38, 0x6D, 0x4C, 0x6E]
flag=list("-------------------")
flag[-1]=chr(dic[-1]^0x13)
for i in range(17,-1,-1):
tmp=dic[i]^i
if i%2==1:
flag[i]=chr(tmp+i)
else:
flag[i+2]=chr(tmp)
print(''.join(flag))
得到flag
结语
关键是找到加密函数