i春秋2017第二届广东省强网杯线上赛Nonstandard题目writeup

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xiangshangbashaonian/article/details/81872485

0x01:运行之后就提示让输入flag   如果输入不正确 就退出

 

0x02:PEiD查壳发现没有加壳  VC的程序

 

 

0x03:IDA载入分析  关键字符串  双击进入

 

 

扫描二维码关注公众号,回复: 3127545 查看本文章

 

双击进入   F5大法  找到关键代码

 

既然关键在于sub_401480这个函数   那就双击进入一探究竟

 

现在就明白了  我们的input经过sub_401070这个函数运算之后是否等于v3  也就是nAdtxA66nbbdxA71tUAE2AOlnnbtrAp1nQzGtAQGtrjC7===

如果相等 sub_40148函数返回值=1 就输出yes

则input就是我们要得到的flag

 

一定要注意这个字母n   IDA分析后默认是没有和其他在一块的(这是一个大坑 还好我提前OD动态调试了一波)

https://img-blog.csdn.net/20180421133002747

转换之后

 

 

发现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

猜你喜欢

转载自blog.csdn.net/xiangshangbashaonian/article/details/81872485