ebCTF bin200 Writeup
来源:互联网 发布:linux源码编译mysql 编辑:程序博客网 时间:2024/06/03 16:14
刚接触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/Change byte。
通过“[*] You rolled a one! Very nice!”等提示信息找到其他几处判断语句,使用相同的方法修改机器码。但是有两处为near jump,jnz的机器码为0F 85,将其修改为0F 84即可。
修改完后Edit/Patch program/Apply patches to input file保存修改后的文件,运行便能得到flag:ebCTF{64ec47ece868ba34a425d90044cd2dec}。
- ebCTF bin200 Writeup
- ACTF writeup
- ACTF writeup
- ISCC2014 writeup
- hctf2014 writeup
- UCTF WriteUp
- ISCC2014 writeup
- ISCC2016Basic Writeup
- writeup-flag
- writeup-passcode
- writeup-random
- writeup-coin1
- writeup-khaleesi
- writeup-web
- writeup-woo
- 校赛 writeup
- 校赛writeup
- ISCC2017 writeup
- TThreadedSelectorServer模式源码分析
- PHP Session锁及并发机制 | void session_write_close(void)函数
- Codevs 2776 寻找代表元(二分图匹配)
- Java多线程下模拟文件下载
- hdu 5213
- ebCTF bin200 Writeup
- 删除同文件夹下相同的文件(HashSet和file)
- [DP] HDU5819 Knights
- 设计模式总结之Interpreter Pattern(解释器模式)
- 设计模式-行为型-访问者模式(Visitor)
- Eclipse 4.6 Neon 的Tomcat插件安装方法
- POJ - 2488 A Knight's Journey
- python的一个对比
- zzuliOJ 1908:小火山的围棋梦想(DFS+小思维)