学习笔记(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-11-16在电脑上怎么模拟手机的运行环境?-icode9专业技术文章分享
- 2024-11-16接收socket数据,莫名其妙socket就关闭了是怎么回事?-icode9专业技术文章分享
- 2024-11-16ts nightly是什么?-icode9专业技术文章分享
- 2024-11-16如何升级vscode版本?-icode9专业技术文章分享
- 2024-11-16如何设置vscode默认的node版本?-icode9专业技术文章分享
- 2024-11-16shell 如何创建一个文件夹?-icode9专业技术文章分享
- 2024-11-16useReducer案例详解:从零开始理解与应用
- 2024-11-15聊聊用LangChain4J构建聊天机器人的那些事儿
- 2024-11-15LangChain 和 LlamaIndex 在检索增强生成(RAG)中的大比拼:全面对比评测
- 2024-11-15平台工程不只是配置管理:超越CFEngine的方法