bugku-re-特殊的base64和不好用的ce


1.特殊的base64

确实是特殊的base64,换表base64
有一串末尾为==的字符串,还给了一串64位的表。就判断是base64换表了。
1.png

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

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
3.png

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边运行边调试

找到第一串字符串,因为“点击一万次”是第一个窗体的,后面的字符串才是主程序里的。
4.png

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

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

开始运行
7.png

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

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

9.png
解密得到flag{c1icktimes}