2019年6月打卡第二周_八十一难wp
0x01.先运行一下程序,发现运行发生错误,但是都我们解题没有太大影响0x02.用exeinfope查看程序是多少位的和加没加壳
可以看出程序是32位的,并且是Microsoft Visual C++编译的,同时没有加壳
0x03.用静态分析神器 IDA Pro进行反编译
首先我们查找主函数 main,因为,所有程序都是从主函数main开始运行的,所以,通过main能
够很好的分析出程序的大概逻辑,然后,跟进main_0,通过双击函数名即可进行跟进
这就是整个main函数的运算逻辑,因为结尾是return。
然后对main进行分析.
可以看到程序先执行的是一个xor运算,所以,我们第一想法是这可能跟逆运算有关系
我们都知道的逆运算:
+的逆运算是-
- 的逆运算是+
^的逆运算是^
* 的逆运算是/
然后继续进行分析
发现一个有意思的函数FindWindow,发现windows窗口,猜想一下,是不是发现ida.exe的窗口
会给我们产生什么影响,有可能。但是先不管,继续分析先
发现又是一个xor运算,这里同之前的一样
继续分析
发现了三个特殊名字的函数,这里讲解一下,当ida不能根据原有函数进行显示时,会用ida自己命
名方式,即通过sub_函数入口地址的方式来命名函数
然后,我们对这三个函数分别进行跟进
在这里我们又发现了一个同样的xor运算,但是我们在前面也发现了比较有意思的信息,
indebug,这里是不是对我们最后运算产生影响呢?我们先不管,如果最后结果有问题,我们再回
来继续思考。
跟进第二个函数
这里我们同样发现了同样的xor运算,处理方式和前面的一样。在前面我们发现了特殊的信息,
HIDWORD,MEMORY[],猜测这可能和内存高低位有关系,但是和后面的运算没大关系,所以我
们也可以先不管,有问题在
回来分析
跟进第三个函数
看到了有意思的信息,The last step,666,猜测可能最后的输出就是正确的flag了
下面我们同样发现了同样的xor运算,处理方式同样
大概的逻辑应该就是对指定的字符串进行五次xor运算,然后进行拼接得到最后的flag.
先按照这种逻辑进行写EXP.
0x04.写EXP
这里运用了数组来存储十六进制的字符,然后通过循环,对数组内的值进行^运算,然后,将运算
后的十六进制数转换为字符,进行拼接
涉及的python函数:
range():可以创建一个整数列表,通过for来循环遍历数组内的值
chr():将十六进制的数转换为字符
最后通过+=运算符来进行拼接字符,得到最后的flag
0x05.运行后得到最后的flag:
**** Hidden Message *****
感谢分享,我会认真学习的!
感谢分享,我会认真学习的!
页:
[1]