BUUCTF逆向前八题

Easyre

先用exeinfo查看文件信息

用IDA64位打开文件,再用shift+f12打开字符串窗口,发现flag字符串

双击跳转到字符串在汇编代码中的存储地址

点击字符串下方注释中的跳转链接,即可跳转至引用它的函数对应的汇编代码处

按f5反汇编,生成汇编代码处的c语言伪代码

分析代码,直接观察可知flag为代码中的所示字符串。

Reverse1

先用exeinfo查看文件信息,发现是64位

用IDA64位打开文件,再用shift+f12打开字符串窗口,发现helloworld字符串

双击跳转到字符串在汇编代码中的存储地址

按CTRL+x判断字符串由谁引用,并跳转到对应位置

按tab转换为c语言形式

利用r键把if里str2后面的数字转化为ascII码

再双击str2找到其在原文中的位置

按所给条件把hello world里的两个o换为0即为最后的flag值

Reverse2

先用exeinfo查看文件信息,发现为64位

用IDA64位打开文件,再用shift+f12打开字符串窗口,找到wrong flag双击跳转

Ctrl+x找到其被引用对象并跳转

按tab或f5转为c语言

把数字用r转化为ascII码

双击flag跳转到flag位置

发现7Bh可以用r转化为ascII码

根据图4的c语言分析,得出flag为{hack1ng_fo1_fun}

内涵的软件

先用exeinfo查看文件信息,发现为32位c++文件

接着用IDA打开,并按shift+f12打开字符串列表

找到判断语句下面一行的代码(第二行),双击跳转到相应位置

按tab转为c语言,推断v5后应该是所需flag

新年快乐

先用exeinfo查看文件信息,发现为32位

用IDA打开发现左边只有两个选项,果断退出并使用UPX软件脱壳,下图为脱壳后的结果

老方法shift+f12打开并推测please input the flag这行应该是c语言中的某一行

接着ctrl+s跳转到此界面

按tab或f5转换为c语言形式

Str2里面的HappyNewYear!则为所需flag

此题注意,exeinfo中初步信息那栏带UPX则需要手动脱壳!

Xor

先用exeinfo查看文件信息,无壳

用IDA打开,并按tab或f5转换为c语言格式

经分析发现若要成功得到flag的值,需得到b数组里的值,但这其中包含了一个异或运算,需要明确异或两遍等于其本身,且b数组是33位(第11行),接着我们对global进行分析,双击global进行跳转

(上图的界面鼠标放在黄色部分会显示出内容的,截图没显示)

双击上图的黄色区域,下图选中的区域即为我们需要的数据了

按shift+e提取出字符数组

再把数组复制到提前写好的脚本中,获取flag值

Helloword

需下载安卓逆向工具,这里我用的是Androidkiller,进入后点左上角打开题目文件

点击左面main开头的字符串

往下翻直接可以找到flag

Reverse3

先用exeinfo查看文件信息,无壳,32位

用IDA打开,按shift+f12,在字符串中找到形如c语言中的字符串并双击

接着ctrl+x跳到对应位置并按tab或f5转换为c语言伪代码

为方便说明,我把destination重命名为Str1(选中按n重命名),自下而上分析,发现第25行把v4复制到Str1中了,找v4的值,即第24行,双击此行sub开头的字符串

继续双击sub开头的字符串,发现出现新的内容

继续双击蓝色部分字符串,得到以下结果

发现为base64编码(edit>plugins>findcrypt可以快速发现加密方式),接着返回到图3界面,向下分析发现要输出正确的flag则需使Str1和Str2相等,所以将Str2逆向还原为Str1,再对Str1解码,需要写一个脚本

把得到的字符串去解下码,即为flag值

  • 6
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值