吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 5498|回复: 25
收起左侧

[CTF] 小白爆破方式解一道逆向题目mine的过程

  [复制链接]
再见依然 发表于 2020-11-6 16:51
本帖最后由 再见依然 于 2020-11-6 16:55 编辑


我太惨了,单位组织ctf培训,5天的时间,就第一天参加了半天,其余三天半都被叫到其他地方搬砖了.然后第五天我终于有时间回来参加培训了,结果第五天老师没讲课,一天时间就搞了个模拟ctf比赛.

分享一下其中一道逆向都解题过程吧.纯新手,知识都是平时逛逛吾爱,偶尔学一点.题目放在附件里了,有兴趣都朋友也可以试试.


这个小游戏打开按enter开始,移动方向键,按enter确认,类似扫雷的玩法,会提示周边有几个雷,但是没其他可操作的,一踩到雷就马上提示游戏结束,然后重新开始.
16012593135964.jpg


一开始以为右上角的剩余雷数300是个突破口,猜测把剩余雷数变为0即可通关,后来废了很多波折,发现不行,应该就是个干扰项.

然后打算用od去调试一下,打开发现这么提示
16012598198646.jpg

百度搜过来说是64位程序,需要用64位的od去跑,就又下载了个64位的x64dbg
放上个吾爱破解的x64dbg下载地址
https://down.52pojie.cn/Tools/Debuggers/x64dbg_2020_09_14.zip
用X64dbg打开mine.exe
16012600235079.jpg
它会自动下了几个断点,先点几下运行,运行到正常的启动界面
16012601191902.jpg
然后点击顶上工具栏的Az图标,搜索字符串
16012601704147.jpg
然后会自动搜出几个中文字符串,按照经验,我一般喜欢在报错界面下断点,也就是游戏结束这里,下一个断点
16012602595845.jpg
然后在游戏里随便踩几个雷,这时候会停留在断点
后来摸索发现
lea rcx, ds:[0x00000000004861F8]
这段语句就是显示游戏结束的文字
lea rcx, ds:[0x0000000000486016]
4861F8修改为486016会显示剩余地雷:0,但是无实际意义
关键点在于下一句
call mine.40153B
16012605454908.jpg
执行了这段程序,游戏就结束了.
那么我首先想到的是,能不能跳过去,比如直接把这段代码改为下一个call mine.40157C
那就试试看
16012606637460.jpg
在这段代码上右键选择汇编
16012606912660.jpg
代码改成这样,然后点击确定.确定完会自动弹出修改下一段代码,我们只修改一段代码,所以直接点击关闭.
然后再运行
16012607636157.jpg
显示了个junkflag,被作者教育了一下,没这么简单.
不过接近真相了
期间绕了很多弯路,最终还是感觉要回到call mine.40157c上
16012609371995.jpg
PS:其实我汇编也学的不怎么样,以下是我猜出答案后再观察分析的,观察一下这段代码,感觉大概是这么个意思
cmp 比较了一个值
JNE 不等于就跳转mine.40164D
要么就跳转mine.4015FE

16012613246124.jpg
于是我就先修改为call mine.40164D
16012613902888.jpg
还是提示这个
然后把mine.exe关掉,手动用x64dbg重新打开(不然出来的flag是乱码的,不知道怎么回事)
16012618250830.jpg
重新打开后,直接修改这一段,改成4015FE,点击确定
16012621042391.jpg
点击继续运行,flag就出来了

16012619576371.jpg

注意!!!!我之所以说要重新打开mine.exe就是这个意思,有时候不知道怎么会flag乱码,反正不行就多打开几次吧.

mine.zip

706.83 KB, 下载次数: 31, 下载积分: 吾爱币 -1 CB

题目

免费评分

参与人数 7吾爱币 +12 热心值 +6 收起 理由
QWSXCDE + 1 + 1 我很赞同!
fengbolee + 1 + 1 用心讨论,共获提升!
wasdzjh + 1 + 1 谢谢@Thanks!
i66235 + 1 + 1 热心回复!
zjun777 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
弗由 + 1 谢谢@Thanks!
Hmily + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!

查看全部评分

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

junehappylove 发表于 2020-11-6 20:41
有啥用?就给一堆乱码吗?
 楼主| 再见依然 发表于 2020-11-8 22:51
szxpck 发表于 2020-11-7 16:12
程序会判断扫雷数是否等于601,如果等于601,输出正确的答案,否则输出junkflag,可以试试用IDA分析,个人 ...

ok,我试试。老师讲ida那段时间我也没有在
ghy197674 发表于 2020-11-7 08:54
名字真难娶呀 发表于 2020-11-7 12:46

天天看看学习
sixwalker 发表于 2020-11-7 14:39
天天看看学习学习谢谢
 楼主| 再见依然 发表于 2020-11-7 15:44
junehappylove 发表于 2020-11-6 20:41
有啥用?就给一堆乱码吗?

ctf就是是隐藏了一个flag,把flag给弄出来,然后提交就可以得分
szxpck 发表于 2020-11-7 16:12
程序会判断扫雷数是否等于601,如果等于601,输出正确的答案,否则输出junkflag,可以试试用IDA分析,个人感觉比X64dbg要方便很多。
Jeraxx 发表于 2020-11-8 18:55
感谢大佬的分享
pym1688 发表于 2020-11-9 08:10
小白一个,'暂不知有啥用处,学习中
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-24 22:30

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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