学习笔记(2)BUUCTF-RE-CrackRTF
2021/7/20 23:41:22
本文主要是介绍学习笔记(2)BUUCTF-RE-CrackRTF,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
下载文件后发现无壳,用IDA打开
找到主函数,发现一共要求我们输入两次密码
先对第一次输入进行分析,首先要求我们输入的字符串长度为6位,然后通过atoi函数将字符串转换成整型数并保存到v7中,且要求该整型数需要大于100000
经过上述操作后将v7与字符串@DBApp连接,通过函数sub_40100A进行加密,然后再与6E32D0943418C2C33385BC35A1470250DD8923A9进行比较,若相同则继续向下
此时对我们来说最重要的就是搞清函数sub_40100A是如何加密的,进入该函数发现应该是应用了CryptAPI函数库,其中CryptCreateHash最为重要,0x8004u为标识值,经查询这是Hash函数中的SHA1
已知加密函数为SHA1,且输入有限制那么只需要对100000-999999后加@DBApp进行SHA1加密与密文进行比较暴力破解明文,得到明文123321@DBApp
接下来看第二个输入的字符串,限制输入字符串长度为6,并将第一部分得到的明文连接在后面,分析函数sub_401019,发现CryptCreateHash的标识码为0x8003u,为MD5,但是该部分对输入并没有任何限制,直接暴力破解无限制六位数时间过于漫长,于是我们继续向下分析
对sub_40100F进行分析,其中重要函数为FindResourceA,用于确定指定模块中具有指定类型和名称的资源的位置,SizeofResource函数用于计算长度,LoadResource函数用于加载资源,LockResource指向了AAA文件的资源
继续分析函数sub_401005,该函数将输入的密码与AAA中的资源进行了异或操作,返回后得到了dbapp.rtf文件
至此我们只需要将AAA中的资源与dbapp.rtf文件代码中的六位进行异或操作即可,这样就能得到输入的密码
将我们下载的文件用ResourceHacker打开,即可得到AAA文件中的字符
然后上网搜索一下RTF文件的代码,发现前六位都为"{\rtf1"
写一个脚本将他们异或即可得到输入的密码为"~!3a@0"
打开程序输入两次密码,文件夹中会生成一个文件,打开即可得到Flag{N0_M0re_Free_Bugs}
这篇关于学习笔记(2)BUUCTF-RE-CrackRTF的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-22怎么通过控制台去看我的页面渲染的内容在哪个文件中呢-icode9专业技术文章分享
- 2024-12-22el-tabs 组件只被引用了一次,但有时会渲染两次是什么原因?-icode9专业技术文章分享
- 2024-12-22wordpress有哪些好的安全插件?-icode9专业技术文章分享
- 2024-12-22wordpress如何查看系统有哪些cron任务?-icode9专业技术文章分享
- 2024-12-21Svg Sprite Icon教程:轻松入门与应用指南
- 2024-12-20Excel数据导出实战:新手必学的简单教程
- 2024-12-20RBAC的权限实战:新手入门教程
- 2024-12-20Svg Sprite Icon实战:从入门到上手的全面指南
- 2024-12-20LCD1602显示模块详解
- 2024-12-20利用Gemini构建处理各种PDF文档的Document AI管道