逆向攻防世界CTF系列33-流浪者
shift+f12看到pass,跟进
是个输入的处理,其实很简单,看不懂也没关系,先看看return
这里strcmp成功后return的就是成功
最后要为KanXueCTF2019JustForhappy
while ( *(_DWORD *)(a1 + 4 * v4) <= 0x3Du ){Str1[v4] = aAbcdefghiabcde[*(_DWORD *)(a1 + 4 * v4)];++v4;}Str1[v4] = 0;
上面的代码其实就是字典的一个映射出来,模拟一下就知道,我们只要把KanXueCTF2019JustForhappy推回去得到映射关系a1数组就行也就是v5。
aAbcdefghiabcde是abcdefghiABCDEFGHIJKLMNjklmn0123456789opqrstuvwxyzOPQRSTUVWXYZ
得到映射列表后我们回去看最初的代码,其实可以发现就是把输入的字符处理到1-62
写解密代码
dict = 'abcdefghiABCDEFGHIJKLMNjklmn0123456789opqrstuvwxyzOPQRSTUVWXYZ'enc = 'KanXueCTF2019JustForhappy'list = []for i in range(len(enc)):list.append(dict.index(enc[i]))for i in range(len(list)):if list[i] < 10:print(chr(list[i] + 48),end='')elif list[i] < 36:print(chr(list[i] + 87),end='')else:print(chr(list[i] + 29), end='')
j0rXI4bTeustBiIGHeCF70DDM
t[i] + 29), end=‘’)
j0rXI4bTeustBiIGHeCF70DDM根据提示加上flag{}