当前位置:网站首页>CTF逆向入门题——掷骰子
CTF逆向入门题——掷骰子
2022-07-06 09:33:00 【TiggerRun】
题目传送:Beat our dice game and get the flag
0x00 查壳
使用PEiD确定程序未加壳
0x01 OD动态调试
打开后我先是F7 F8调试了一会儿,没有啥思路。
就使用了字符串搜索法进行定位。
可以知道这是个掷骰子的问题,并且要掷出 “3-1-3-3-7”才能拿到Flag。
并且这5次掷骰子是分开写的,根据每次掷骰子定位代码的位置,发现cmp后紧跟着jnz,通过下断可以知道这个判断就是用于判断掷出的值和程序中的值是否相同。
0x02 NOP jnz(成功)
简单暴力的把jnz跳转命令NOP掉,程序不就可以继续运行了嘛~香!
0x03 修改跳转(失败)
当然原理还是使用字符串分析
通过最后的一个判断和跳转,可以定位出蓝色框内就是成功的逻辑,那是否可以让程序直接跳转到这里运行呢???
跳转地址 0x004029AD
下断点可以知道,程序走到这一步会要我们输入,但是当我们在这里直接修改汇编进行跳转,程序还没走完就崩溃了,可能是需要的变量没声明???
我就想在第一次做判断的时候跳转,这样可能程序的变量都已经定义完成了。
但是结果flag是空的。
原因分析:
- 跳转的位置不够早,flag还没计算好…
- 此路不通,flag是根据前面5个函数算的(搞过反爬虫的加密都知道,比如某宝的js时时刻刻在循环计算一些参数,不按流程来就是死路一条)
想到可以看看最后一次掷骰子后程序的逻辑是怎么样的。
第七次错误跳转到 0040270A
发现代码块最后一句为跳转到 00402870
然后再将第一次判断错误的跳转地址改为 00402870
这时候提示… something wrong,当然有问题,我们只走了1个函数。在最后还有一个cmp。想着应该把这个jnz给nop了就OK了吧哈哈哈哈。
现实很残酷,最终flag未能成功出来,这说明一点,这个flag是来自前5个函数分别计算的!!!
只是分享了思路,虽然这种思路没能成功拿到flag
边栏推荐
- JVM garbage collector part 2
- Fdog series (V): use QT to imitate QQ to realize login interface to main interface, function chapter.
- Shawshank's sense of redemption
- Program counter of JVM runtime data area
- DOS 功能调用
- Wu Jun's trilogy insight (V) refusing fake workers
- The QT program compiled on CentOS lacks a MySQL driven solution
- Koa Middleware
- Mongodb在node中的使用
- DOS function call
猜你喜欢
Install docker under windows10 (through Oracle VM VirtualBox)
JVM之垃圾回收器上篇
The "advertising maniacs" in this group of programmers turned Tiktok advertisements into ar games
案例:检查空字段【注解+反射+自定义异常】
Set up the flutter environment pit collection
Introduction to spring trick of ByteDance: senior students, senior students, senior students, and the author "brocade bag"
Alibaba cloud server builds SVN version Library
Logical operation instruction
MySQL string function
1. Introduction to JVM
随机推荐
JVM garbage collector part 1
Flink 解析(二):反压机制解析
Typescript basic operations
唯有学C不负众望 TOP1环境配置
逻辑运算指令
Log4j2 major vulnerabilities and Solutions
Shawshank's sense of redemption
案例:检查空字段【注解+反射+自定义异常】
8086 内存
À propos de l'utilisation intelligente du flux et de la carte
Only learning C can live up to expectations TOP4 S1E6: data type
字节跳动春招攻略:学长学姐笔经面经,还有出题人「锦囊」
Flink源码解读(三):ExecutionGraph源码解读
JVM class loading subsystem
redux使用说明
arithmetic operation
关于Stream和Map的巧用
字节跳动海外技术团队再夺冠:高清视频编码已获17项第一
Alibaba cloud server builds SVN version Library
JVM 垃圾回收器之Serial SerialOld ParNew