题目来源:https://adworld.xctf.org.cn/task/answer?type=reverse&number=4&grade=1&id=5570&page=2攻防世界流浪者
运行程序发现让你输入password。拖入IDA利用字符串搜索找到主要部分仔细观察可以发现,先进行了一次变换,将0到9,a到z,A到Z,映射到了0到61,然后再进行第二次变换,利用一个表进行对应变换,最后和目标字符串进行比较,总体比较简单。给出代码:
key="abcdefghiABCDEFGHIJKLMNjklmn0123456789opqrstuvwxyzOPQRSTUVWXYZ"
goal='KanXueCTF2019JustForhappy'
s=''
flag=''
for x in goal:
for i in range(len(key)):
if(x==key[i]):
s+=chr(i)
for i in range(len(s)):
x=ord(s[i])
if x<=9:
x+=48
elif x<=122-87:
x+=87
else:
x+=29
flag+=chr(x)
print(flag)