直接看到主函数
关键函数位 17 行的 sub_401080,我们点进去看看
这个函数又可以分为三个部分,第一个部分是 sub_401000 函数,第三部分是 sub_401030,第二部分就是这中间的部分,我是先点开了 byte_40E0A0 这个数组,点进去一看发现了 base64 的编码表,再回头看第二部分的加密,就可以确定这是 base 编码了
然后再看看第一部分的函数
发现这里对 base64 的编码表做了点手脚,把里面的位置调换了一下
在看第三部分 sub_401030,这个函数将编码后的 flag 的大小写互换了一下
总结一下就是将 flag 用换了表的 base64 编码一下,然后再把大小写互换一下即可,然后我们再找一下密文,密文就是主函数中的 byte_40E0E4 也就是 zMXHz3TIgnxLxJhFAdtZn2fFk3lYCrtPC2l9
先写一个大小写互换和得出新表的脚本吧
1 | a = 'zMXHz3TIgnxLxJhFAdtZn2fFk3lYCrtPC2l9' |
跑出来的结果如下,上面是大小写互换后的密文,下面是新表
最后我们再用一个脚本把新的 base64 编码表放进去,再来解码这个密文就可以得到 flag 啦~
得到 flag {bAse64_h2s_a_Surprise}