buuctf–CrackRTF


无壳,32位
IDA F5 分析伪代

进入sub_40100A

搜索发现这是hash算法,即sub_40100A进行了hash加密。


6E32D0943418C2C33385BC35A1470250DD8923A9是加密后的字符串。
0x8004u是标识码,不同的标识码代表不同的加密方式,标识符代表加密方式。
通过查询知道了这是sh1加密,通过python的hashlib包可以进行爆破解密。

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


爆破出来passwd(1),输入看是否正确
接着分析代码

进入sub_401019

与之前一样,不同的是标识码变了,意味着加密方式变了
查看字符串27019e688a4e62a649fd99cadaafdb4e长度为32位
32位最常见的就是MD5,表示码0x8003u也代表MD5加密
这次不能爆破,这次没有给定六位密码的范围(上一次是给定数字大于100000),所以没办法爆破。
只能接着往下看

进入sub_40100F

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

进入sub_401005

发现是从AAA的文件中取出字符和密码进行异或(异或函数在sub_401005)
用工具ResourceHacker查看文件中的资源。


第13行进行循环异或,并赋值给lpBuffer,我们再回到sub_4014D0的第26行

发现WriteFile的第二个参数就是lpBuffer。也就是说,要将lpBuffer指向的数据写入RTF文件。那么RTF文件的开头肯等是RTF的文件头,而之恶个文件头就是又lpBuffer起初指向的数据,即“AAA”的数据,与我们第二次输入的字符串(String的前6位)进行异或得到。又因为异或的逆运算就是异或 ,所以我们只需要将RTF文件头前六位与“AAA”的数据前六位异或,就能得到我们第二次输入的6位字符串。

前6位0x05,0x7D,0x41,0x15,0x26,0x01
再随便打开一个rtf的文件,看文件头
{\rtf1\ansi\ansicpg936\deff0\deflang1033等等等只取前6位,即
{\rtf1
直接写脚本将他们异或:

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)

得到:

将两次密码都输入;得到一个dbapp.rtf的word文档,打开获得flag

buuctf--CrackRTF相关推荐

  1. BUUCTF reverse题解汇总

    本文是BUUCTF平台reverse题解的汇总 题解均来自本人博客 目录 Page1 Page2 Page3 Page4 Page1 easyre reverse1 reverse2 内涵的软件 新年 ...

  2. BUUCTF的Web真题学习整理(一)

    目录 WEB1-WarmUp (任意文件包含漏洞) WEB2-高明的黑客(fuzz脚本) WEB3-easy_tornado (服务端模板注入(ssti攻击)) WEB4-Hack World(时间盲 ...

  3. BUUCTF寒假刷题-Web

    前言 寒假横向刷题(尽量) BUUCTF

  4. BUUCTF之[Zer0pts2020]Can you guess it? basename函数绕过

    BUUCTF之[Zer0pts2020]Can you guess it? basename函数绕过 题目 后台PHP源码: <?php include 'config.php'; // FLA ...

  5. BUUCTF刷题笔记

    BUUCTF刷题笔记 [极客大挑战 2019]BabySQL 从这句话我们可以看出,这个网站的后台是做了过滤处理的 这个时候我们先用万能密码实验一下看看,是什么类型的SQL注入 输入1',看看返回的结 ...

  6. BUUCTF Quoted-printable编码

    Quoted-printable可译为"可打印字符引用编码",编码常用在电子邮件中,如:Content-Transfer-Encoding: quoted-printable ,它 ...

  7. BUUCTF NewStarCTF一些新知识记录

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 前言 一.eazyxor 二.RSA_begin 三.Yesec no drumsticks 四.EzSnake 五.Pyre ...

  8. buuctf Mark loves cat

    buuctf Mark loves cat 打开是个静态页面,源码也无任何有用信息 dirsearch扫描后发现.git泄露 GitHack.py下载得到两个php文件,接下来就是代码审计: flag ...

  9. BUUCTF·[MRCTF2020]天干地支+甲子·WP

    题目来源 BUUCTF在线评测 (buuoj.cn) 附件 得到得字符串用MRCTF{}包裹 一天Eki收到了一封来自Sndav的信,但是他有点迷希望您来解决一下 甲戌 甲寅 甲寅 癸卯 己酉 甲寅 ...

  10. BUUCTF Reverse/findKey

    BUUCTF Reverse/findKey 先看文件信息:32位程序,没有加壳 打开看看,标题为find flag,也没啥有用的信息 IDA32位打开,找到start函数,看到有个main,跟随跳转 ...

最新文章

  1. JAXB 转 XML乱码
  2. openstack(Queens版) 安装FWaaS
  3. 1.微型计算机中主要包括有( ).,《微机原理与应用(1)1351》16秋在线作业2
  4. 设置log缓存_带你搞明白什么是缓存穿透、缓存击穿、缓存雪崩
  5. Unable to update index for central http://repo1.maven.org/maven2/
  6. 详解C语言中 # 和 ## 的用法
  7. 关于SAP Spartacus在服务器端渲染模式和SAP Commerce Cloud API白名单的问题
  8. hdu 1251 统计难题(求前缀出现了多少次)
  9. 利用websocket实现一对一聊天
  10. 在新建FileInputStream时使用当前相对路径或者绝对路径作为参数的问题
  11. 阿里云、百度云被约谈 督促落实防范治理电信网络诈骗
  12. 干掉Spring Cloud和Dubbo!阿里这个神级框架究竟有多牛?
  13. 《WCF技术内幕》翻译5:第1部分_第1章_蓝月亮:WCF介绍和本章小结
  14. CISCO路由AAA的Easy ×××
  15. Selenium碰到的异常记录
  16. 干货 | 自然语言处理中注意力机制综述
  17. 拓端tecdat:R语言深度学习卷积神经网络 (CNN)对 CIFAR 图像进行分类:训练与结果评估可视化
  18. 省A类竞赛二等奖--村先游项目VUE前端重构
  19. ev3编码软件linux,机器人编程软件下载 乐高ev3机器人编程软件(LEGO MINDSTORMS EV3 Home Edition)V1.3.1 中文安装版 下载-脚本之家...
  20. idea中加入插入当前系统日期快捷键

热门文章

  1. 10个python办公黑科技,助你办公效率提高100倍
  2. matlab中nnt,Matlab语言的Neural Network Toolbox 及其在同步中
  3. 博世中国的战略与战术,如何应对复杂多变的中国市场需求
  4. 量子计算机进行量子传输,量子技术新突破:按一下按钮就能实现量子传输!
  5. php在线电子小说网站毕业设计源码
  6. h5微信f分享链接给对方获取对方手机号_裂变、分享、传播:App推广社交玩法全解析...
  7. Vue侧导航栏的实现
  8. 英语专业转行计算机可以吗,英语专业转行学IT,从“小白”到月薪10k+,她做到了!...
  9. 毕业论文页码及目录设置方法
  10. matlab中readwav的用法,使用matlab的wavread函数总提示出错,那位高手指点下啊