【CTF】Reverse Writeup@360CTF

来源: 360 CTF 2014 Reverse20

说明:已在压缩包中给定了一个用ReverseMe.exe加密过后的文件:密文.db请分析ReverseMe.exe的算法,写出解密算法,解密该文件得到Key。该Exe里有一个bug,导致exe无法运行;
提示:
你有两种方法得到该Key:
1.找到bug,patch掉之后,运行两次该程序即可解密文件得到key。
2.老老实实的逆这个简单的算法,写出一个解密程序,解密。

答案: 4A5B8DE6F7D3B6F5

 

解题思路:

用od载入程序,运行提示参数错误

【CTF】Reverse Writeup@360CTF

猜测参数应该是一个文件名,那这里就填入pass.db,重新运行出现异常,这个应该就是题目中所说的bug。

【CTF】Reverse Writeup@360CTF

那么就直接用ida6.6打开文件,按Ctrl+F5反编译一下,得到如下主函数

【CTF】Reverse Writeup@360CTF

可以看出程序从文件中读入数据然后调用了sub401000函数进行处理

【CTF】Reverse Writeup@360CTF

函数的意图很明显,就是用0x73686974对原始字符串进行异或处理,剩余的部分在用0x73进行异或处理,因此可以得到如下的方法求解flag

【CTF】Reverse Writeup@360CTF

由于内存中字符有逆序存储的方式,所以这里应该倒过来写。最后运行一下即可获得答案。

 

 

@Reference:周鹏(室友你的博客是多少……)

你可能感兴趣的:(write)