一.CrackRTF
前言:
这题不同于之前的静态分析只需要分析程序然后根据已知逆向推理未知即输入的flag
这题是将未知输入作为密钥,是产生flag的关键,在此题flag的载体是第三方.rtf文件
查得32位无壳
用IDA32打开,main函数F5反编译
进入main_0函数
从最下面看,找到正确出口,还有很多错误出口,阅读程序
先对Destination和String1初始化
提示输入密码
限定输入密码为6为有效数字
字符串连接@DBApp
经过sub_40100A函数处理(哈希SHA-1加密)
验证哈希值
如果验证成功进入第二次密码输入
补充:atoi这种可识别有特征的函数一般不是需要我们识别的函数,是已有的函数,这里是Windows API中的程序接口,作用图种有,就是转换字符串为数字
接下来进入sub_40100A函数看看哈希SHA-1加密是怎样的
如图:先哈希加密再转换为16进制字符串再连接给String1再断后
补充:这里得到粉红色字体函数都是可识别有特征的函数不需要我们去弄懂因为是现成的Windows API程序,具体功能知道就行
因为哈希加密是单向的,但是我们知道了前6位是100000-999999的数字,所以加上@DBApp就可以对已知哈希值爆破,附上脚本
import hashlib
string