ebCTF bin200 Writeup

刚接触CTF,做了一道简单的逆向题(题目链接)。这道题是一个掷骰子的游戏,只要能掷出一串特定的值就能得到flag。

这里写图片描述

0x01 IDA加载分析

使用IDA加载二进制文件,打开Strings window查看字符串。

这里写图片描述

通过这些字符串可以看到只有依次掷出3-1-3-3-7就有可能得到flag,但是要随机掷出这些数字明显不可能,因为其中有个7!为此,需要跟进字符串“[*] You rolled a three! Good!”引用处查看程序的处理逻辑。

这里写图片描述

从图中可以看到,程序通过判断[ebp+var_5C]中的值是否为3进行跳转,如果为3则进入右边分支,程序继续执行;否则,程序跳转至loc_40198B提示掷出的数字不是3,游戏结束!

这里写图片描述

0x02 修改指令

理清程序的逻辑后,采用最简单的办法控制程序的执行路径——修改指令。首先,通过菜单栏中Options/General/Disassembly/Number of opcode bytes设置IDA使其显示指令的机器码。jnz的机器码为75,只需将其改为jz的机器码74。修改方法:Edit/Patch program/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值