B轮融资|今年的hsctf里遇到了一个比较少见的nds逆向题目,侥幸拿下一血( 二 )



stage2第二阶段如下图



猜测是点击图片上的字来通过 。
继续分析stage2的代码
在其中发现这样一段代码



【B轮融资|今年的hsctf里遇到了一个比较少见的nds逆向题目,侥幸拿下一血】可以看到之前在stage1中出现的获取输入的函数
确定输入的位数为8位数也就是说应该点击界面上带数字的小方格八次 。
继续看下面可以看到有一段进行验证的代码



代码实现了多个方程对输入进行校验其中使用的2014DB8为除法 。 这里使用Z3解方程解开后将得到的值在屏幕上点击即可进入下一关由于出题人并不够严谨导致方程有多个解 。 通过后进入第三关



stage3第三阶段走迷宫需要把鸟移到左下角



但在实际中我们移到一半就发现下面有一堵墙挪不动了这时候想到小时候玩游戏魂斗罗之类的有作弊码那作者很有可能也设置了这样的一段代码 。 这时候我们需要看一下IDA的代码 。 发现了可疑的一部分 , 如下图 。



猜测这里就是作弊码 , 接着看代码如何满足条件进入这里 。



在这里发现需要v76以一定的顺序执行这几个赋值就可以通过检测 。 通过看代码可知v76是r4寄存器而后观察模拟器按键设置



按下QWASZX对应的键位即可让r4寄存器产生我们需要的值接下来就是确定它的顺序 。
v121 == 50 && v117 == 30 && v122 == 60 && v118 == 70 && v120 == 40 && v119==80

最终确定按键顺序为xsazwq
按下后中间的墙壁消失了 。 小鸟成功走到了右下角 。
final在通过三个阶段后界面如下图



这里把我们的输入拼接成flag即可需要注意的是第三阶段需要提交的是任天堂游戏机的真正按键这里我们根据模拟器键位得到真正的游戏机键位 。
最终flag为
flag{cuteblueicecube_1-16-20-6-21-4-16-18_A-X-Y-B-R-L
由于第二阶段是多解第二阶段输入为1-16-20-6-21-4-16-18 成功通过
小结题目难点主要是 , 陌生的架构以及模拟器不能进行下断调试等(可能有模拟器可以调试?知道的大佬可以提点一下)
》》想学习网安打CTF的朋友福利来了!
免费赠送价值11980安全学习资料包