![DEF CON CTF Qualifier 2022 not-so-advanced writeup DEF CON CTF Qualifier 2022 not-so-advanced writeup]()
之前没有接触过对应文件格式的内容,使用https://fileinfo.com/extension/gba
GBA文件是任天堂Game Boy Advance(GBA)视频游戏(如神奇宝贝、塞尔达或最终幻想)的ROM镜像。它包含一个GBA游 戏的文件,保存的格式可以使用game Boy模拟器玩。
一个任天堂gameboy游戏 ,因此下载对应的VisualBoy Advance模拟器,这里我使用的是http://www.mgba.io/downloads.html 使用模拟器运行,界面很简单,只是输出了Read the code,should be easy 。
使用键盘上的上下按键能够更改字母,发现都是a-z小写字母, 回车键为确认,会输出信息。
通过运行程序大致了解到程序会检查输入的值,与对应的值比对,来显示出不同的提示信息。
尝试使用Ghidra进行逆向,找到了关于GBA的插件,https://github.com/SiD3W4y/GhidraGBA
这里踩了一个坑,本机上使用的Ghidra版本是最新版,插件版本为10.1.导致Ghidra无法加载下载的插件,因此重新下载了10.1版本的Ghidra ,花了一些时间。 下载对应版本的Ghidra就可以直接载入插件了,就能对gba文件分析了。
"abcdefghijklmnopqrstuvwxyz_"
很明显 FUN_08000568 就是main函数
FUN_08000e74就是printf函数,main函数代码如下
通过分析以上代码分析,main函数功能很少 ,只是获取输入并检查,
iVar1 = FUN_08000298(auStack268);
如果通过函数FUN_08000298的值处理后的值iVar1的值等于0x12E1,那么就可以通过程序,输出That works。
而不是我们随便输入的值 ,输出DAT_08005ce4中的值(Nope)
输入点只能小写字母,确认后进行验证,看代码还要满足值等于 0x12e1 ,否则会输入nope
现在就要着重分析函数FUN_08000298,其伪代码为
其调用了fun_08000ba0,继续看fun_08000ba0伪代码
![DEF CON CTF Qualifier 2022 not-so-advanced writeup DEF CON CTF Qualifier 2022 not-so-advanced writeup]()
![DEF CON CTF Qualifier 2022 not-so-advanced writeup DEF CON CTF Qualifier 2022 not-so-advanced writeup]()
![DEF CON CTF Qualifier 2022 not-so-advanced writeup DEF CON CTF Qualifier 2022 not-so-advanced writeup]()
很复杂,进行了大量的变量的处理,其实关注这两行代码就可以了
thunk_FUN_08000cc8((uint)local_12 + (uint)*(byte *)(param_1 + local_18),0xfff1);
thunk_FUN_08000cc8((uint)local_14 + (uint)extraout_r1,0xfff1);
那么最开始的 Abcdefghijklmnopqrstuvwxyz_ 要作为字符串输入。
原文始发于微信公众号(山石网科安全技术研究院):DEF CON CTF Qualifier 2022 not-so-advanced writeup
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
点赞
https://cn-sec.com/archives/1131757.html
复制链接
复制链接
-
左青龙
- 微信扫一扫
-
-
右白虎
- 微信扫一扫
-
评论