吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 8757|回复: 15
收起左侧

[CTF] BugkuCTF逆向题目04 - [游戏过关]

  [复制链接]
shavchen 发表于 2019-4-9 21:34
本帖最后由 shavchen 于 2019-4-28 21:39 编辑

<!-- TOC -->

分析题目

  • 直接运行

    运行程序.png

  • 题目简介  

    目的:点亮所有的lamp(台灯)
    输入lamp编号(m),则该lamp变亮,同时(m-1)和(m+1)的lamp亮暗状态会变化
    输入多次m,最后将lamp全部点亮,游戏过关   

  • 先玩玩

    输入2,结果为  

    2.png

    输入5,结果为   

    5.png  

    输入8,结果为   

    8.png

    尝试多次,无法将所有灯全部点亮
    初步确认无法手工破解后,默默打开IDA和OD  

查壳脱壳

  • 使用exeinfo查壳工具

    查壳.png

    此程序无壳

IDA静态分析

  • 搜索字符串(shift+F12)

    string.png

    发现明显暗示:done!!!the flag is  

    这可能就是成功游戏过关后,显示flag字符串
    意味着我们只要让程序执行到这个位置,就可以获得flag了  

  • 双击查看该字符串的内存地址

    flag is.png

    变量位于只读数据区(rdata)  

  • 查看该字符串变量的交叉引用地址

    设置显示行前缀地址(Option-General-Display-Line Prefix)  

    地址.png

    X键定位变量的交叉引用地址  

    地址.png
    发现进栈地址:0x0045E940 ,这里需要记住偏移地址E940 ,下面使用OD直接非常规执行到该地址

OD动态调试

  • 载入程序

    段基地址.png

    记住基地址0130

  • 找一个可控的程序片段,以跳转到目的flag段

    之前玩游戏的时候发现每次输入都是循环执行的,故这个地址是可以被正常执行到的
    在OD中搜索字符串找到该输入n的语句地址  

    智能搜索.png

    CTRL+G [0x0130F51A],在这个位置设置断点,运行程序  

    F51A.png  

    随便输入一个数字[1],让程序执行到该位置  

    pause.png  

  • 跳转到flag字符串地址

    双击汇编指令段,输入jmp 0x0130e490 ,跳转到目标flag字符串的内存空间   

    jmp.png
    jmp2.png  

    单步执行,进入目的地址  

    flag_po.png  

    单步执行、再单步执行....
    遇到一个循环,单步跳过(循环判断语句,具体内容不管,设置断点于循环末尾,跳过之)  

    循环断点.png
    点击运行,跳过循环  

    出现flag字符串  

    flag.png

  • flag字符串

    zsctf{T9is_tOpic_1s_v5ry_int7resting_b6t_others_are_n0t}

总结

  1. 调试几乎所有的Windows程序,将IDA和Olldbg联合使用,将起到事半功倍的效果

  2. 解题的第一步,需要理清题目想要干什么,运行并研究程序本身的运行流程和提示是必要的  

  3. IDA调试程序找到关键变量的偏移地址,再使用OD调试,是一种常见的调试手段

  4. 本程序使用了jmp指令,通过中断可以控制的程序语句,跳转到正常情况下不可以到达的flag语句位置,从而获得flag,是一个很棒的思路

  5. 掌握OD中执行程序,设置断点,跳出循环的基本操作

免费评分

参与人数 3吾爱币 +7 热心值 +2 收起 理由
LonelyGorge + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
Hmily + 5 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
freeker + 1 + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| shavchen 发表于 2019-4-9 21:54
zhaotianrun 发表于 2019-4-9 21:49
刚才我电脑坏了,对不起,这个写的还可以,不过真的不能够正常的进去吗

它一个变化要导致前后两盏灯都变化,而总共有8栈灯,是不可以的,三的倍数应该才行,个人理解哈
zhaotianrun 发表于 2019-4-9 21:49
刚才我电脑坏了,对不起,这个写的还可以,不过真的不能够正常的进去吗
2013年 发表于 2019-4-9 22:27
52lxw 发表于 2019-4-9 23:07
学习学习
wangzhenuen 发表于 2019-4-10 10:52

学习学习
你的燚龘 发表于 2019-4-10 16:43
支持下技术贴
jmorning 发表于 2019-4-10 23:19
是没有图片?我这刷不出来
 楼主| shavchen 发表于 2019-4-11 09:28
jmorning 发表于 2019-4-10 23:19
是没有图片?我这刷不出来

手机端显示有点问题
Hmily 发表于 2019-4-28 08:24
@shavchen 图了?文章是原创吧?
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-12-29 00:10

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表