REVERSE-PRACTICE-BUUCTF-6

  • rsa
  • CrackRTF
  • [2019红帽杯]easyRE
  • [ACTF新生赛2020]easyre

rsa

解压出来是.enc和.key两个文件,.enc是密文,.key存放着公钥信息
使用在线网站或者openssl解析.key文件中存放着的公钥信息
可获知rsa需要的模数n和公钥e

使用在线网站或者yafu分解n,结果为两个大素数

写脚本即可得到flag

CrackRTF

exe程序,运行后提示输入密码,输入错误直接退出,无壳,ida分析
main函数中,要求输入两次密码,先看第一个密码
第一个密码的部分逻辑清晰,重点是sub_40100A这个函数

sub_40100A函数点进去,发现有个CryptCreateHash函数
CryptCreateHash函数详解
重要的是这个函数的第二个参数,决定了要使用的哈希算法
这里0x8004u使用的是sha(sha1)算法

写脚本爆破,得到第一个密码

然后是第二个密码,和第一个密码的逻辑差不多,不过用的是md5散列,但是没有对第二个密码的6个字符做任何限制,爆破不可取,往下走,发现拼接后的input_2作为参数传入了sub_40100F函数

sub_40100F函数的主要逻辑用红框标出,即exe程序带有的资源“AAA”和拼接后的input_2进行异或运算,结果写到程序创建的名为“dbapp.rtf”文件中
使用工具Resource Hacker可以获取资源“AAA”的数据
sub_401005函数就是进行异或运算
程序要创建并填充一个完整的rtf文件,rtf文件的文件头必不可少,搜索或自建一个空的rtf文件用010editor打开,可以得知rtf文件的文件头
由于第二个密码拼接时放在input_2的前面,也就是说第二个密码和资源“AAA”的数据异或后的结果正是rtf文件的文件头

写脚本得到第二个密码,第二个密码的长度为6,故资源“AAA”和rtf文件头都取前6个字节异或即可得到第二个密码,注意“\r”在python中的转义语义,再加一个“\”

再次运行exe程序,输入正确的第一个和第二个密码,在当前目录下生成一个“dbapp.rtf”文件,内容即为flag

[2019红帽杯]easyRE

elf文件,无壳,ida分析
左侧函数窗找不到主逻辑函数,shift+F12打开字符串窗口
发现一长段很像base64的字符串和base64字符表

一路交叉引用base64字符串,来到sub_4009C6函数
先看该函数中用到base64字符串的片段
逻辑是v56经过10次base64变换,结果为已知的那个base64字符串

写脚本得到v56,结果为一个url,打开没发现和flag相关的内容,应该是误导选手了

继续看sub_4009C6函数的其他内容,该函数一开始给一堆变量赋值,然后有一个异或后比较的运算,用红框标出来了

写脚本,提示说前四个字符为“flag”,也没有对flag具体内容的提示

sub_4009C6函数分析完后,并没有对flag具体内容的判断
于是再次去字符串窗口找找有没有其他提示的内容
在那串base64字符串下面,有一段没有在sub_4009C6函数中用到的数据

交叉引用来到sub_400D35函数
v5和v8相同,v8和byte_6CC0A0数组前4个字符异或的结果为“flag”,前面也提示到前4个字符为“flag”
然后v8再和byte_6CC0A0数组的全部元素异或
写脚本,先解出v8,再循环异或得到flag

[ACTF新生赛2020]easyre

exe程序,运行后提示输入,输入错误直接退出,有upx壳,脱壳后ida分析
main函数逻辑清晰,flag的内容减1后作为下标,从_data_start_这个数组中取值,与v4到v15比较,验证flag的内容

写逆脚本即可得到flag

REVERSE-PRACTICE-BUUCTF-6相关推荐

  1. BUUCTF Reverse/findKey

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

  2. BUUCTF Reverse helloword、findit

    BUUCTF Reverse helloword.findit helloword findit 一天一道CTF题目,能多不能少 记录一下这两道题,这两道题是安卓逆向的题目~ 第一次接触安卓逆向的题目 ...

  3. BUUCTF Reverse/Ultimate Minesweeper

    BUUCTF Reverse/Ultimate Minesweeper 先看文件信息,没有加壳,且为net编写的程序 运行是一个扫雷游戏,只要点错一个就会自动退出(左上角显示的是雷的数目,一共有897 ...

  4. BUUCTF Reverse xor

    题目:BUUCTF Reverse xor 一些犯傻后学到了新东西的记录 查壳,没壳,IDA打开 main函数很好理解,输入一个长度为33的字符串,1-32位与前一位异或后与global相等,则判定f ...

  5. BUUCTF Reverse/[网鼎杯 2020 青龙组]jocker

    BUUCTF Reverse/[网鼎杯 2020 青龙组]jocker 先看下文件信息,没有加壳,32位程序 运行一下,又是一道字符串比较的题目 用IDA32位打开,分析一下 // positive ...

  6. BUUCTF Reverse/[GWCTF 2019]pyre

    BUUCTF Reverse/[GWCTF 2019]pyre 下载得到一个pyc文件,用这个在线反编译pyc,pyo反汇编出代码 print 'Welcome to Re World!' print ...

  7. BUUCTF reverse题解汇总

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

  8. BUUCTF Reverse(helloworld)

    BUUCTF Reverse(helloworld) 题目附件下载下来之后,是.apk后缀,所以可能是安卓逆向. 这里我用的工具是Android Killer,下载地址:https://xiazai. ...

  9. BUUCTF Reverse/[WUSTCTF2020]Cr0ssfun

    BUUCTF Reverse/[WUSTCTF2020]Cr0ssfun 先看文件信息, IDA64位打开,很简单的题目,只要一个个输入就行 都是返回的这种元素 _BOOL8 __fastcall i ...

  10. [BUUCTF]Reverse——[网鼎杯 2020 青龙组]jocker

    网上大部分是动调,我尝试IDC解一下, 无壳,32位,放入IDApro,查看main函数 查看wrong和str函数,借出假的flag a=[0x66,0x6B,0x63,0x64,0x7F,0x61 ...

最新文章

  1. 作为一个程序员为什么要写博客?
  2. MATLAB作二维傅里叶变换所需要注意和知道的东西(im2double、fft2、abs、imshow、二维傅里叶变换的物理意义)
  3. java spring上传_SpringMVC上传文件的三种方式
  4. 老男孩教育参观云计算公司
  5. Jzoj4782 Math
  6. [Violation] Added non-passive event listener to a scroll-blocking ‘mousewheel‘ event.
  7. 牛客网--牛牛找工作
  8. 2019年度最受欢迎中国开源软件评选, 请给JeecgBoot 投票,谢谢支持
  9. linux 关闭setitimer_Linux定时器函数setitimer
  10. 【SpringBoot_ANNOTATIONS】组件注册 07 @Import 给容器快速导入一个组件
  11. 微信撤回软件安卓版_微信阻止撤回app最新版-微信阻止撤回软件下载v1.0.3 安卓版-腾牛安卓网...
  12. 【天意使用教程系列】破解系统登录密码
  13. Linux中源码的安装
  14. VBS基础教程(收藏)
  15. 怎样区别7290喷壳机与原壳黑莓手机,里面有详图
  16. 使用this.$refs.XXX修改某个元素样式并添加点击事件
  17. 开心农场违规 恐面临关停危险
  18. 共识,权威以及去中心化的区块链
  19. 递归算法之八皇后问题
  20. HTTP 代理原理及实现

热门文章

  1. 【10】jQuery学习——入门jQuery选择器之表单选择器
  2. 【数据结构与算法】【算法思想】动态规划
  3. mysql search yum_CentOS 7 yum安装配置mysql
  4. go爬虫和python爬虫哪个好_python 爬虫实战项目--爬取京东商品信息(价格、优惠、排名、好评率等)-Go语言中文社区...
  5. python的convert_python编程开发之类型转换convert实例分析
  6. mysql配置文件结构_MariaDB/MySQL配置文件my.cnf解读
  7. rdd分片 spark_Spark分区
  8. UML类图与类间六种关系表示
  9. gsoap的几个常用设置选项
  10. eventfd man