新手一枚,如有错误(不足)请指正,谢谢!!
题目下载:下载地址
参考资料:
base16,base32,base64 编码方式的通俗讲解
Base16,Base32,Base64编码的介绍
IDA载入,找到main函数
Buf为读入的字符串,如果sub_401480()函数的返回值等于1的话则输出成功
则进入sub_401480()查看
所以先看看sub_401070()函数中对v1做了怎样的变换
下面是Base32加密,可参考文章Base16,Base32,Base64编码详细学习
然后分析一下sub_401000()函数,主要是对内存中字符串进行处理
也就是一个base32加密,字符集是zYxWvUtSrQpOnMlKjIhGfEdCbA765321
加密后的密文是nAdtxA66nbbdxA71tUAE2AOlnnbtrAp1nQzGtAQGtrjC7===
然后开始写python脚本
import base64
origin = "nAdtxA66nbbdxA71tUAE2AOlnnbtrAp1nQzGtAQGtrjC7==="
biao = str.maketrans("zYxWvUtSrQpOnMlKjIhGfEdCbA765321","ABCDEFGHIJKLMNOPQRSTUVWXYZ234567")
flag = base64.b32decode(origin.translate(biao))
print(str(flag,'utf-8'))
最终flag为<mark>flag{f1ag_1s_enc0de_bA3e32!}</mark>