CTF逆向入门题——掷骰子

题目传送: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是空的。
原因分析:

  1. 跳转的位置不够早,flag还没计算好…
  2. 此路不通,flag是根据前面5个函数算的(搞过反爬虫的加密都知道,比如某宝的js时时刻刻在循环计算一些参数,不按流程来就是死路一条)

想到可以看看最后一次掷骰子后程序的逻辑是怎么样的。
在这里插入图片描述
第七次错误跳转到 0040270A
发现代码块最后一句为跳转到 00402870
在这里插入图片描述
然后再将第一次判断错误的跳转地址改为 00402870
在这里插入图片描述
这时候提示… something wrong,当然有问题,我们只走了1个函数。在最后还有一个cmp。想着应该把这个jnz给nop了就OK了吧哈哈哈哈。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
现实很残酷,最终flag未能成功出来,这说明一点,这个flag是来自前5个函数分别计算的!!!

只是分享了思路,虽然这种思路没能成功拿到flag

### 回答1: CTF逆向CTF竞赛中的一种型之一,通过逆向工程方法来解决问入门CTF逆向需要了解的知识领域很广泛,比如二进制文件、硬件逆向、反汇编技术、加密算法、网络协议等等。下面是一个简单的脑图,介绍了CTF逆向入门所需要掌握的知识点: 首先是二进制文件的相关知识,包括ELF、PE等格式的文件结构和常见工具的使用。其次是反汇编和调试技术,了解汇编语言和调试器的使用方法,可以帮助我们在逆向分析中更深入地了解程序逻辑。接下来是加密算法和转换方式的理解,比如Base64、SHA、AES、DES等加密方式的原理和常见攻击方式。此外,网络协议的了解也是非常重要的,包括TCP/IP协议、HTTP协议、UDP协议等,可以帮助我们理解网络数据的传输和安全隐患。最后,还需要了解一些常见的漏洞和技术,比如堆栈溢出、格式化字符串漏洞、ROP等,可以帮助我们攻击和利用目标程序。总的来说,CTF逆向入门需要多方面的知识储备和实践经验,在不断学习和实践过程中提升自己的能力,才能更好地应对复杂的逆向挑战。 ### 回答2: ctf逆向(reverse)是赛事中的一项重要技能,难度较高,需要掌握一定的专业知识。以下是初学者入门ctf逆向的脑图: 1.计算机组成原理:掌握计算机的各种硬件组件和内部结构,如处理器、内存、I/O设备等。 2.汇编语言:掌握常用汇编指令和机器指令,包括基本的数据类型、运算符、控制结构和子程序等。 3.操作系统:理解操作系统原理,掌握基本的程序调试和反汇编工具,如IDA Pro、OllyDbg等。 4.反编译:了解反编译工具和技术,学会使用OllyDbg进行程序的动态调试和逆向分析。 5.加密技术:了解常见的加密和解密算法,如MD5、SHA1、AES、RSA等。 6.漏洞利用:掌握常见的漏洞类型和利用技术,如缓冲区溢出、格式化字符串漏洞、堆溢出等。 7.网络安全:了解网络安全基础知识,包括TCP/IP协议、网络攻击和防御、网络数据包分析等。 8.实践和练习:参加ctf比赛,通过练习和实践逐步提高自己的逆向技能和解能力。 通过以上脑图的学习,初学者可以逐步掌握ctf逆向技能,提高自己在竞赛中的排名和成绩。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值