本文最后编辑于 前,其中的内容可能需要更新。
1.特殊的base64
确实是特殊的base64,换表base64
有一串末尾为==的字符串,还给了一串64位的表。就判断是base64换表了。

两个脚本都是换表的base64解法。

1 2 3 4 5
| import base64 str1 = "mTyqm7wjODkrNLcWl0eqO8K8gc1BPk1GNLgUpI==" string1 = "AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz0987654321/+" string2 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/" print (base64.b64decode(str1.translate(str.maketrans(string1,string2))))
|
1 2 3 4 5 6 7 8 9
| import base64 table = 'AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz0987654321/+' table2 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/' tmp = 'mTyqm7wjODkrNLcWl0eqO8K8gc1BPk1GNLgUpI' tmp2 = '' for i in tmp: index = table.index(i) tmp2 += table2[index] print(base64.b64decode(tmp2+'=='))
|
2.不好用的ce
1.用网上的脚本vbs依次点击到1w次,或者自己写个按键精灵
自己控制好次数,快到就要移开光标,自己点到1w

1 2 3 4 5 6 7
| Set objShell = CreateObject("Wscript.Shell") dim counter counter=1 do while counter<20 objShell.SendKeys "{ENTER}" counter=counter+1 loop
|
2.od边运行边调试
找到第一串字符串,因为“点击一万次”是第一个窗体的,后面的字符串才是主程序里的。

把文中所有的跳转都下上断点(F2)。

看到了je的大跳转已实现,判断就是主循环。

开始运行

更改为jnz或者直接nop掉,使其跳转未实现,继续开始就能输出flag

最后取的代码看起来像base64,其实是base58
base编码家族区别

解密得到flag{c1icktimes}