0x01:运行之后就提示让输入flag 如果输入不正确 就退出
0x02:PEiD查壳发现没有加壳 VC的程序
0x03:IDA载入分析 关键字符串 双击进入
双击进入 F5大法 找到关键代码
既然关键在于sub_401480这个函数 那就双击进入一探究竟
现在就明白了 我们的input经过sub_401070这个函数运算之后是否等于v3 也就是nAdtxA66nbbdxA71tUAE2AOlnnbtrAp1nQzGtAQGtrjC7===
如果相等 sub_40148函数返回值=1 就输出yes
则input就是我们要得到的flag
一定要注意这个字母n IDA分析后默认是没有和其他在一块的(这是一个大坑 还好我提前OD动态调试了一波)
转换之后
发现5个bit为一组,分别赋给8个值,每个值5位
就是base32呀
接着分析sub_401000()
一共有三步操作:
1. 将ABCDEFGHIJKLMNOPQRSTUVWXYZ偶数位变为小写字母 也就是AbCdEfGhIjKlMnOpQrStUvWxYz
2. 再将字符串进行逆序
3. 后面加上765321
那么base32编码表从默认的ABCDEFGHIJKLMNOPQRSTUVWXYZ234567就变为了zYxWvUtSrQpOnMlKjIhGfEdCbA765321
所以我们需要用Python translate() 方法与maketrans()方法来将nAdtxA66nbbdxA71tUAE2AOlnnbtrAp1nQzGtAQGtrjC7===还原
在解一次base322即可
至此,关键代码分析完毕。
Py大法实现:
得到flag{f1ag_1s_enc0de_bA3e32!}
对了,也有一个假flag
ZmxhZ3tmbGFnX2lzX25vdF9tZSF9
用base64解密一下(算是个彩蛋吧)
题目+idb分析文件+py脚本已全部打包
百度网盘下载链接: https://pan.baidu.com/s/1V-inJEXtPwopyKHtTqP02A 密码: qiu3