REVERSE-PRACTICE-BUUCTF-6
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相关推荐
- BUUCTF Reverse/findKey
BUUCTF Reverse/findKey 先看文件信息:32位程序,没有加壳 打开看看,标题为find flag,也没啥有用的信息 IDA32位打开,找到start函数,看到有个main,跟随跳转 ...
- BUUCTF Reverse helloword、findit
BUUCTF Reverse helloword.findit helloword findit 一天一道CTF题目,能多不能少 记录一下这两道题,这两道题是安卓逆向的题目~ 第一次接触安卓逆向的题目 ...
- BUUCTF Reverse/Ultimate Minesweeper
BUUCTF Reverse/Ultimate Minesweeper 先看文件信息,没有加壳,且为net编写的程序 运行是一个扫雷游戏,只要点错一个就会自动退出(左上角显示的是雷的数目,一共有897 ...
- BUUCTF Reverse xor
题目:BUUCTF Reverse xor 一些犯傻后学到了新东西的记录 查壳,没壳,IDA打开 main函数很好理解,输入一个长度为33的字符串,1-32位与前一位异或后与global相等,则判定f ...
- BUUCTF Reverse/[网鼎杯 2020 青龙组]jocker
BUUCTF Reverse/[网鼎杯 2020 青龙组]jocker 先看下文件信息,没有加壳,32位程序 运行一下,又是一道字符串比较的题目 用IDA32位打开,分析一下 // positive ...
- BUUCTF Reverse/[GWCTF 2019]pyre
BUUCTF Reverse/[GWCTF 2019]pyre 下载得到一个pyc文件,用这个在线反编译pyc,pyo反汇编出代码 print 'Welcome to Re World!' print ...
- BUUCTF reverse题解汇总
本文是BUUCTF平台reverse题解的汇总 题解均来自本人博客 目录 Page1 Page2 Page3 Page4 Page1 easyre reverse1 reverse2 内涵的软件 新年 ...
- BUUCTF Reverse(helloworld)
BUUCTF Reverse(helloworld) 题目附件下载下来之后,是.apk后缀,所以可能是安卓逆向. 这里我用的工具是Android Killer,下载地址:https://xiazai. ...
- BUUCTF Reverse/[WUSTCTF2020]Cr0ssfun
BUUCTF Reverse/[WUSTCTF2020]Cr0ssfun 先看文件信息, IDA64位打开,很简单的题目,只要一个个输入就行 都是返回的这种元素 _BOOL8 __fastcall i ...
- [BUUCTF]Reverse——[网鼎杯 2020 青龙组]jocker
网上大部分是动调,我尝试IDC解一下, 无壳,32位,放入IDApro,查看main函数 查看wrong和str函数,借出假的flag a=[0x66,0x6B,0x63,0x64,0x7F,0x61 ...
最新文章
- 作为一个程序员为什么要写博客?
- MATLAB作二维傅里叶变换所需要注意和知道的东西(im2double、fft2、abs、imshow、二维傅里叶变换的物理意义)
- java spring上传_SpringMVC上传文件的三种方式
- 老男孩教育参观云计算公司
- Jzoj4782 Math
- [Violation] Added non-passive event listener to a scroll-blocking ‘mousewheel‘ event.
- 牛客网--牛牛找工作
- 2019年度最受欢迎中国开源软件评选, 请给JeecgBoot 投票,谢谢支持
- linux 关闭setitimer_Linux定时器函数setitimer
- 【SpringBoot_ANNOTATIONS】组件注册 07 @Import 给容器快速导入一个组件
- 微信撤回软件安卓版_微信阻止撤回app最新版-微信阻止撤回软件下载v1.0.3 安卓版-腾牛安卓网...
- 【天意使用教程系列】破解系统登录密码
- Linux中源码的安装
- VBS基础教程(收藏)
- 怎样区别7290喷壳机与原壳黑莓手机,里面有详图
- 使用this.$refs.XXX修改某个元素样式并添加点击事件
- 开心农场违规 恐面临关停危险
- 共识,权威以及去中心化的区块链
- 递归算法之八皇后问题
- HTTP 代理原理及实现
热门文章
- 【10】jQuery学习——入门jQuery选择器之表单选择器
- 【数据结构与算法】【算法思想】动态规划
- mysql search yum_CentOS 7 yum安装配置mysql
- go爬虫和python爬虫哪个好_python 爬虫实战项目--爬取京东商品信息(价格、优惠、排名、好评率等)-Go语言中文社区...
- python的convert_python编程开发之类型转换convert实例分析
- mysql配置文件结构_MariaDB/MySQL配置文件my.cnf解读
- rdd分片 spark_Spark分区
- UML类图与类间六种关系表示
- gsoap的几个常用设置选项
- eventfd man