Title: 流浪者
WP:
打开cm.exe,要求我们输入passwd
随便输入几个,弹出’错了, 加油’的对话框
用IDA pro打开,在IDA view可以找到这些string
按下x找到用到他们的函数
像KanXueCTF2019JustForhappyz 这种字符串就很值得关注
它也就只在一个函数里出现了
找找邻近函数, 然后反编译一下
我们发现cm.exe会将输入的字符串的大写字母减去29,小写字母减去87,数字减去48,得到一个新数组
然后从字典"abcdefghiABCDEFGHIJKLMNjklmn0123456789opqrstuvwxyzOPQRSTUVWXYZ"里取出相应位置的字符,组成新字符串
将新的字符串与KanXueCTF2019JustForhappyz进行比较
披着RE外衣的crypto题
那我们只需要逆这步骤来就行了
s ='abcdefghiABCDEFGHIJKLMNjklmn0123456789opqrstuvwxyzOPQRSTUVWXYZ'
ss = 0
mp = {}
for i in s:
mp[i] = ss
ss = ss + 1
s = 'KanXueCTF2019JustForhappy'
res = []
for i in s:
res.append(mp[i])
ans = ''
for i in res:
if(i < 10):
ans = ans + chr(i+48)
elif(i < 36):
ans = ans + chr(i+87)
else:
ans = ans + chr(i+29)
print(ans)
j0rXI4bTeustBiIGHeCF70DDM
所以flag为:
flag{j0rXI4bTeustBiIGHeCF70DDM}