本文最后更新于417 天前,其中的信息可能已经过时,如有错误可以直接在文章下留言
BUUCTF里面Reverse板块的逆向题,IDA直接打开来F5,如下
提示还是很明显的,关于base64编码的题,还给了一段strange string的像是base64编码的字符串,我们直接放进Cyberchef里面看一下
发现不能直接解码出答案,猜测是把base64的常规表给更换了,但是Strings window里面找出的base64的表好像也没更换
我后面再进入base64_encode的函数里面看了看,猜测是编码方式动了手脚,但是还是看不出什么端倪,思路就中断了,好吧,直接看Writeup,原来是……..
妈呀,旁边函数窗口有个O_OLookAtYou函数,做题刚不久还不是很经常看Function window,打开来如下,逻辑并不复杂,直接写脚本解决
脚本代码如下
table=list('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/')
for i in range(0,10):
a=ord(table[i])
table[i]=table[19-i]
result=19-i
table[result]=chr(a)
s=''.join(table)
print(s)
输出结果即为修改后的base64码表,为TSRQPONMLKJIHGFEDCBAUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/,修改原码表就能得到答案啦,BUUCTF的题目记得把wctf2020换成flag,flag{Base64_is_the_start_of_reverse}
做这题看Writeup还知道了在python把字符串变成列表的方法,导论Python课压根没听,虽然很基础还是不知道,写脚本补一补还是不错的
table=list('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/')
#把字符串转换为列表
table=''.join(table)
#把列表转换为字符串