安恒CrackRTF题解

本题参考了足够多的题解,并且尝试弄懂

首先,下载附件之后,发现就是exe,打开之后让输入密码之类的,然后就直接拉入ida中了(不会脱壳,也幸好没有壳),然后拉入之后,在这里插入图片描述
主函数需要接着进入main0:
在这里插入图片描述
发现输入的是pbdata,并且对于长度也有要求,也就是6个字符;在2处
然后对于(3)则是把ASCII码转为数字,用法在:https://blog.csdn.net/zmx2473162621/article/details/103937585
而对于(5)strcat用法:https://blog.csdn.net/zmx2473162621/article/details/103937695

我们会发现,有把输入的转为数字之后,必须大于100000,而这时,我们有理由相信,输入的字符串,里面都是数字,因为如果不是,用atoi函数转化过来之后就不满足大于100000了!
接着就是把“@DBApp”附加到了输入的后边;
然后就是一个函数,我们进去之后再进去,发现:
在这里插入图片描述
这个东西我查了一下,是一个加密库,他选择了一个加密算法,那么我们来看一下…加密后的结果就是:6E32D0943418C2C33385BC35A1470250DD8923A9,这个就是main函数里面的,然后看一下长度40,就猜是sha1加密,加密之后长度为40! 那么就找一下py加密过程,就直接暴力

##import hashlib
##flag = "@DBApp"
##
##for i in range(100000,999999):
##    s=str(i)+flag
##    x=hashlib.sha1(s.encode())
##    if x.hexdigest()=="6e32d0943418c2c33385bc35a1470250dd8923a9":
##        print(str(i)+flag)

得出123321@DBApp,所以密码是123321
第一层密码破解出来了,然后看第二层:第二层大体差不太多,只是把123321@DBApp,追加到了输入的后边,然后发现:
在这里插入图片描述
也是一个加密,但是应该不是sha1加密了,看加密后的27019e688a4e62a649fd99cadaafdb4e,是32位的,那么就有理由猜测是md5加密,查了一下,md5加密是不可能被暴力破解的,因为有6+6+6个字符
所以就有一些不知所措,然后看别人的分析,发现里面还有一层if,就进去
在这里插入图片描述
之后发现,这是个啥,就跟着大佬的思路去走,然后看见FindResourceA( )查找资源,(百度的),然后就是找到这个AAA文件,这时候也不知道改咋办,就接着跟着大佬的思路走,发现要用在这里插入图片描述
这个软件打开这个exe文件,所以打开一下,发现:
在这里插入图片描述
这个里面有数据;先放这里,然后继续看,接下来就是加载资源什么的,然后再看到CreateFileA,前有一个函数,进去:
在这里插入图片描述
就是AAA取出的数与输入的数据(因为%v5了,所以就6个)异或一下,然后就得出结果,接下来的地方我也没看懂,大佬说的异或出来的结果应该是rtf文件的头文件,我就直接用winhex打开一个头文件,然后看一下格式:
在这里插入图片描述
取前六个就可以了,然后和AAA前六个异或一下,就可以得到输入;
py代码:

rtf=[0x7b,0x5c,0x72,0x74,0x66,0x31]

aaa=[0x05,0x7d,0x41,0x15,0x26,0x01]

flag=""
for i in range(6):
    tmp=rtf[i]^aaa[i]
    flag+=chr(tmp)

print(flag)

得到flag:~!3a@0
第二层密码,然后输入,会发现在本目录下多了一个rtf文件,然后就得出来了flag:Flag{N0_M0re_Free_Bugs}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章