首页 > 其他分享 >记一道攻防世界上的Reverse-gametime

记一道攻防世界上的Reverse-gametime

时间:2023-12-26 16:45:38浏览次数:39  
标签:攻防 判断 函数 gametime 跳转 text 调试 Reverse

一、题目描述

把文件下载下来,运行后发现是一个简单的小游戏,属于那种玩通关了就给 flag 的,自己先玩了一下,玩了一下大概游戏规则就是看到 s 就按空格,遇到 x 就按x,遇到 m 就按m,但是玩到后面速度非常快,如果你足够厉害,玩到后面应该是可以玩出来的。这里我们就要IDA进行静态分析,又是小游戏,所以也需要ollydbg进行动态调试。

二、解题环境

(1)解题所采用的的是windows11家庭中文版的操作系统

(2)编程语言为C语言

(3)用到的软件:exeinfope.exeIDA(32)以及IDA里面的F5插件 , x32dbg动态调试软件

三、解题思路

第一步:

gametime.exe放到exeinfope.exe查看一下gametime的一些基本信息

上面显示是一个32位无壳的程序,然后运行一下,发现是一个小游戏:

第二步:

gametime.exe放进32位的IDA里面利用F5的插件查看反汇编代码

往下走:

这里是我们跟进去游戏规则sub_401435函数里面来查看一下

查看一下sub_401260判断函数对应的汇编语言及重要跳转函数的地址

分析到这里,我们能清楚的了解到了gametime的第一部分,介绍三个游戏规则看见's'按空格键,看见'x'按'x'键,看见'm'按'm'将,的整个流程及一个很重要的判断函数

.text:004014D6                 pop     edi
.text:004014D7                 pop     esi
.text:004014D8                 pop     ebx
.text:004014D9                 test    al, al
.text:004014DB                 jnz     short loc_401503 //这里到后面进行动态调试时需要进行修改让他直接进行跳转

我们继续往下面分析:

到这里我们可以又分析到一个重要的判断函数:

我们继续跟进去到sub_401507函数里面查看一下,发现与上一个判断函数有一点变化,但是整体的思路没有变化,还是先找判断函数,这里有6次判断,自己动态调试着玩了一下,完成这6次后,后面还有说明这是试玩的6次

查看一下sub_401260判断函数对应的汇编代码及重要跳转函数的地址:

分析到这里我们了解到了这里是gametime的第二部分介绍完规则之后又让你试玩6次,也发现了另一个重要的跳转函数:

.text:0040155E                 pop     edi
.text:0040155F                 pop     esi
.text:00401560                 pop     ebx
.text:00401561                 test    al, al
.text:00401563                 jnz     short loc_401586 //这里到动态调试时可能不止修改一次判断函数,要修改到两个判断函数

我们继续往下面分析:

这里是我们跟进去到当v19=10时跳转到LABEL_41里面调用的sub_4012F6()函数里面查看一下

静态分析到这里,上面算是整个游戏的第三部分正式玩10次,我们可以很清楚的了解到了这个游戏的整个流程,当你完成3次游戏规则介绍,6次的试玩,正式玩成功10次后,第20次就能拿到flag,在这个静态分析里面有两个重要的判断函数,第一个是介绍规则时的判断函数,第二个是试玩和正式玩的时候的一个判断函数,分析到这里我们就需要用x32位的dbg来进行动态调试,找到这两个重要的判断函数的位置进行设置断点调试,检验和修改,让它进行无条件跳转直接跳转。

第三步:

我们进去到x32为dbg来进行动态调试gametime.exe进去之后按下F9:

去找我们静态分析时找到的两个重要的判断函数地址,虽然动态调试时的地址与静态分析的地址有一小点不一样,但是最后四位地址是一样的,我们依照后四位是找一下动态调试里面对应的地址:

.text:004014DB                 jnz     short loc_401503  //第一个判断函数
.text:00401563                 jnz     short loc_401586  //第二个判断函数

找到之后分别进行设置断点跑一下来检验我们的想法是否正确:

第一个判断函数设置断点:

第二个判断函数设置断点:

通过跑了一下发现我们的想法是正确,现在就只需要对这两个判断函数进行修改,让其判断我们输入的是什么都无条件跳转


这样修改完成后,我们F9跑一下gametime.exe,看一下结果和我们预想的是否一样

四、解题结果

跑下来和我们想的一样,到判断输入的是否正确时就直接无条件跳转了继续往下走:

介绍规则的3次:

试玩的6次:

正式玩成功的10次,第11次就出flag了

最终和我们想的一样第20次就出flag:

flag:no5c30416d6cf52638460377995c6a8cf5

五,总结:

完成这个实验后又积累到了一些经验,遇到玩游戏的题一定要先看懂了是如何玩,玩懂了对整个的思路想法还是有一点帮助,进行静态分析时代码太长的话我们可以整体看一下,重点分析一下关键的代码,游戏题玩起来很困难的话可以动态调试着下断点来玩,来慢慢摸索里面的思路从而找到关键的信息,还有一定要严谨,你后面分析的每一步都要在你前面分析出的找到对应的依据,不能凭个人感觉,这样即使可能结果没跑出来,但是你可以根据你的依据反堆回去查找错误!

标签:攻防,判断,函数,gametime,跳转,text,调试,Reverse
From: https://www.cnblogs.com/xyweiwen/p/17928481.html

相关文章

  • 『LeetCode』7. 整数反转 Reverse Integer
    题目描述给你一个32位的有符号整数x,返回将x中的数字部分反转后的结果。如果反转后整数超过32位的有符号整数的范围[−231,231−1],就返回0。假设环境不允许存储64位整数(有符号或无符号)。示例1:输入:x=123输出:321示例2:输入:x=-123输出:-321示例3:输入:x......
  • gdb Reverse Debugging
    参考:https://sourceware.org/gdb/current/onlinedocs/gdb.html/Reverse-Execution.html#Reverse-Executionhttps://www.cnblogs.com/liuhanxu/p/17011772.htmlhttps://blog.csdn.net/xungjhj/article/details/73727477?spm=1001.2101.3001.6650.1&utm_medium=distribute......
  • 【Web攻防之业务安全实战指南】第8章 回退模块测试
    8.1回退测试8.1.1测试原理和方法很多Web业务在密码修改成功后或者订单付款成功后等业务模块,在返回上一步重新修改密码或者重新付款时存在重新设置密码或者付款的功能,这时如果能返回上一步重复操作,而且还能更改或者重置结果,则存在业务回退漏洞。8.1.2测试过程靶场:8_1.zip首先......
  • 【Web攻防之业务安全实战指南】第6章 业务授权访问模块
    6.1非授权访问测试6.1.1测试原理和方法非授权访问是指用户在没有通过认证授权的情况下能够直接访问需要通过认证才能访问到的页面或文本信息。可以尝试在登录某网站前台或后台之后,将相关的页面链接复制到其他浏览器或其他电脑上进行访问,观察是否能访问成功。6.1.2测试过程靶......
  • 云原生服务攻防技术研究 - 影响
    一、Bucket爆破当不知道Bucket名称的时候,可以通过爆破获得Bucket名称,这有些类似于目录爆破,只不过目录爆破一般通过状态码判断,而这个通过页面的内容判断。当对于阿里云OSS不存在有两种返回情况,分别是InvalidBucketName:表示存储桶的名称不符合规范,属于无效的存储桶名称No......
  • 云原生服务攻防技术研究 - 信息收集
    一、元数据在阿里云ECS常见下可以直接请求:http://100.100.100.200/latest/meta-data/ ,来获取元数据参考链接:https://cloudsec.huoxian.cn/docs/articles/aliyun/aliyun_ecs#%E5%85%AD%E4%BF%A1%E6%81%AF%E6%94%B6%E9%9B%86 二、子网信息在进行横向移动时,如果知道目标存......
  • 实网攻防演练丨面对鱼叉式网络钓鱼攻击,蓝队如何防御?
    大家好,我是i春秋的老朋友恶灵退散,95后安全运营工程师,信息安全专业,目前在职于中国某通信厂商做蓝军建设的工作。很高兴受邀i春秋的采访,在本期访谈中,我将给大家介绍下真实的实网攻防经历,以及作为蓝军的经验感悟和知识分享,如果你也是网络安全爱好者,或者对实网攻防感兴趣,欢迎阅读本篇......
  • 特殊字符:安全攻防中容易遗漏的细节
    本文分享自华为云社区《【安全攻防】深入浅出实战系列专题-特殊字符校验》,作者:MDKing。特殊字符校验的背景SQL注入、XSS等常见的安全攻击场景会涉及到一些特殊字符的利用。尤其是界面输入框、API接口可支持输入字符串的情况,如果对来历不明的用户输入如果不加防范,很容易产生......
  • F. Shift and Reverse
    通过操作获得非递减数列,采用KMP算法求解。通过把一个数列打印两遍,遍历是否有长度为N的非递减数列或者非递增数列。通过计算求出最小操作数量。主要代码:#include<bits/stdc++.h>usingnamespacestd;constintN=200010;inta[N];intwork(intn){intindex=0,cnt=1,......
  • 【Web攻防之业务安全实战指南】第5章 业务办理模块测试
    5.1订单ID篡改测试5.1.1测试原理和方法在有电子交易业务的网站中,用户登录后可以下订单购买相应产品,购买成功后,用户可以查看订单的详情。当开发人员没有考虑登录后用户间权限隔离的问题时,就会导致平行权限绕过漏洞。攻击者只需注册一个普通账户,就可以通过篡改、遍历订单id,获得其......