BUUCTF逆向题刷题记录(一)

本文记录了BUUCTF逆向挑战题的解题过程,包括字符串替换、伪代码分析及手工脱壳等技巧。通过具体案例展示了如何使用IDAx64和x64DBG等工具进行逆向分析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#BUUCTF逆向题刷题记录(一)#

一、reverse1

下载reverse_2文件,拿到后丢进exeinfo PE,为64位

用IDA x64打开

shift+F12 查看所有字符串,搜索flag

在这里插入图片描述

双击进去

在这里插入图片描述

x查看交叉引用,跳到该处,F5查看伪代码

在这里插入图片描述

发现存在字符串替换,r将ASCII码转换为字符。分析伪代码发现str2即为flag,但字符串str2中的’o’被替换为了’0’

在这里插入图片描述

双击跳到Str2处,将字符串替换后得到flag

在这里插入图片描述

二、reverse2

下载reverse_2文件,拿到后丢进exeinfo PE,为64位

用IDA x64打开

找到main函数,F5查看伪代码

在这里插入图片描述

发现有一处字符串比较,双击flag点进去查看

在这里插入图片描述

发现flag,记下来,这还不是最后的flag,返回刚刚的伪代码,发现存在字符替换,r将ASCII码转换为字符

在这里插入图片描述

将i和r用1替换,得到flag

三、内涵的软件

下载后用IDA X86打开,找到main函数,F5查看伪代码

在这里插入图片描述

找到一串可疑字符,尝试包上flag提交,成功

四、新年快乐

下载后丢进exeinfo PE,发现有UPX加壳

在这里插入图片描述

尝试手工脱壳,丢进x64DBG,F9运行两次看到Pushad

在这里插入图片描述

F7步进一次发现只有ESP寄存器发生变化,可根据ESP定律。

在这里插入图片描述

选择ESP寄存器,右键在内存窗口中转到

在这里插入图片描述

在内存窗口中选择地址,右键设置硬件访问断点–4字节

在这里插入图片描述

再次F9运行程序后,程序停下来的位置上面即popad–壳代码结束位置。在下面大跳转jmp处F2下断点。继续F9运行程序,直到jmp断点处,F7单步步进,找到OEP

在这里插入图片描述

在这里插入图片描述

直接利用x64 DBG自带的Scylla将程序dump下来,核对原始地址填写正确。

在这里插入图片描述

  1. IAT扫描
  2. 获取导入表
  3. 修复Dump文件

在这里插入图片描述

最终生成新年快乐dump.SCY.exe文件,再丢进exeinfo查看区段,脱壳成功

在这里插入图片描述

丢进IDA中能看到完整的函数结构,F5查看main函数伪代码

在这里插入图片描述

分析代码,在比较函数中输入的str1会与str2进行比较,str2的"HappyNewYear!"应该就是flag的值,提交成功。

五、参考链接

使用x64dbg脱壳之开源壳upx

借助 x64dbg 的 UPX 手工脱壳

x64 DBG下载地址

六、标签

CTF逆向、X64DBG、手工脱壳

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值