CrackRTF


下载文件,无壳直接ida打开,查看主函数:

可以看到,需要我们输入两次密码,而且每次输入密码都必须是6位数
否则退出,并且有两次判断~~
先看第一次,第一次要求我们输入6位数,然后连接上@DBApp,
通过一个sub_40100A函数进行加密,然后与6E32D0943418C2C33385BC35A1470250DD8923A9进行匹配
如果一样则继续往下走~~,否则退出~

先进入第一个加密函数中去看看,内容如下:

这利用到了一个windows加密的加密库函数~
一般第二个参数是加密的方式,但是这里看上去不是很明显,,,,
不过还是可以猜一下的,,,,,
经过发现6E32D0943418C2C33385BC35A1470250DD8923A9是40位的加密后的字符串
很有可能是shal加密,先来爆破试一试~
编写脚本:

import hashlib

flag = "@DBApp"

for i in range(100000,999999):
    s = str(i)+flag
    x = hashlib.sha1(s.encode())
    cnt = x.hexdigest()
    if "6e32d0943418c2c" in cnt:
        print(cnt)
        print(str(i)+flag)
爆出第一次密码~~

运行exe,输入检查正确~
接下来走第二次输入~
第二次输入同理,不过他把123321@DBApp加在了第二次密码的后面,并且进行加密~

直接进入sub_401019函数进行查看~:

发现大体好像差不多,不过第二个参数不同了,应该换了一种加密方式~~
再次查看比较字符串的长度~
发现是32位的,一般来说就是MD5了
不过什么提示都没有,,,我怎么进行爆破啊
6位全字符,这得爆破到一年,,,,陷入迷惘!!!
先继续往下走走看~
发现if里面还有一个函数~
进入到这个比较中的sub_40100F函数看看!!

看到内容如下,应该是从一个AAA的东西里面取出数据,
然后将从AAA中取出的数据和我们传入的参数——也就是输入的第二次密码连接后的字符串
传入一个sub_401005函数
最后生成一个dbapp.rtf文件,看到这想起了题目的RTF~
这个函数应该有东西~

进入sub_401005函数查看一下,
就是将我们从AAA取出的值和第二次密码连接后的字符串进行异或嘛:

不过从AAA中的值不知道,,,,
后面才知道,有一款工具可以直接查看文件中的资源——ResourceHacker

附上下载链接吧~
链接:https://pan.baidu.com/s/10_uSM2JG5BElDywaTsAldg
提取码:a9ng
复制这段内容后打开百度网盘手机App,操作更方便哦
打开得到数据~~

这就好办了,因为要生成一个.rtf的文件,那肯定缺少不了文件头
直接搜索.rtf的文件头~
得到:{\rtf1\ansi\ansicpg936\deff0\deflang1033等等等
这里我们去前6位即可,因为我们密码是6位数的
所以前六位({\rtf1)直接与AAA中数据异或就能得出第二次加密的密码啦~
直接写脚本:

s = "{\\rtf1"

a = [0x05,0x7D,0x41,0x15,0x26,0x01]

flag = ""
for i in range(0,len(s)):
    x = ord(s[i]) ^ a[i]
    flag += chr(x)
print(flag)
得到第二次密码:~!3a@0
验证正确~

最后在本地查找dbapp.rtf文件,最后得到flag~

flag:flag{N0_M0re_Free_Bugs}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值