BUUCTF - re - CrackRTF

BUUCTF - re - CrackRTF

ida分析,需要输入两次密码,估计是两段flag

在这里插入图片描述

先看"27019e688a4e62a649fd99cadaafdb4e"是经过sub_401019()函数,跟进过去,应该是一种什么加密方式

在这里插入图片描述

这段字符是32位,猜测md5,继续看,还有一个函数,跟进看看

在这里插入图片描述

里面有关键信息,生成了一个dbapp.rtf文件

在这里插入图片描述

看sub_401005函数

在这里插入图片描述

将我们从AAA取出的值和第二次密码连接后的字符串进行异或,但是需要知道AAA中的值,使用ResourceHacker查看,取前六个

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传在这里插入图片描述

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

然后找rtf的头文件前六个字符{\rtf1\ansi\ansicpg936\deff0\deflang1033

就是"{\rtf1"

s = "{\\rtf1"

data = [0x05,0x7D,0x41,0x15,0x26,0x01]
flag =""
for i in range (0,6):
    flag+=chr(ord(s[i])^data[i])

print(flag)
#~!3a@0

在解"6E32D0943418C2C33385BC35A1470250DD8923A9",看到sub_40100A()函数

在这里插入图片描述

很类似,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)

#6e32d0943418c2c33385bc35a1470250dd8923a9
#123321@DBApp

得到第一个密码123321第二个密码是~!3a@0

然后运行一下这个程序,生成一个dbapp.rtf,里面就有flag

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/yzl_007/article/details/121212521