Bugku逆向题目-19.LoopAndLoop(阿里CTF)

admin 2026-05-06 06:13:00 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 该文档分析了Bugku平台上的阿里CTF逆向题目LoopAndLoop,通过静态分析APK文件发现输入数字需经native方法校验,最终结果需等于1835996258才能获取flag。关键发现是check方法通过循环调用三个子方法对输入进行固定值加减运算,利用Frida工具hook可提取固定数字1599503850,通过逆向计算得出正确输入为236492408。文档提供了完整的解题步骤和可操作的Frida脚本示例。 综合评分: 91 文章分类: CTF,逆向分析,移动安全,漏洞分析,安全工具


cover_image

Bugku逆向题目-19.LoopAndLoop(阿里CTF)

原创

李北辰 李北辰

SPEEDCoding

2026年5月3日 22:46 山西

在小说阅读器读本章

去阅读

题目链接:https://ctf.bugku.com/challenges/detail/id/120.html

一、题目分析

下载下来题目是一个apk文件,拖入模拟器中运行,提示需要输入正确的数字才可以出来flag。

将APK文件拖入jadx中静态分析,发现源码中首先将输入的字符串转换为数字,然后作为check方法的参数传入,最后的结果等于1835996258时才能输出正确的flag值。

这里发现check方法调用了native方法chec,chec方法来自于liblhm.so文件,将该文件拖入ghidra中查看具体方法实现情况,分析后可以知道这个方法是对check方法的第二个参数(也就是99)逐次减1,然后依次调用check1方法、check2方法、check3方法循环,最后获得计算结果数字。

接下来分析这三个方法,首先是check1方法,这个方法会把input进行加法运算,本质上是加一个固定数字(从1加到99)。

然后是check2方法,这个方法判断s(也就是之前check方法里面循环减1的第二个参数)是否是偶数,偶数的话就加一个固定数字(从1加到999),奇数的话就减一个固定数字(从1加到999)。

最后是check3方法,这个方法也是对input参数加一个固定数字(从1加到9999)。

综合以上三个方法的本质,都是加一个固定数字或者减一个固定数字,并且初始循环参数是固定值99,所以最后得到的结果是用户输入的数字加了一个固定的数字(这个数字不管输入多少都是固定的),判断该结果是否等于1835996258,那么我们只要获取到这个固定数字然后拿1835996258减去即可。

二、解题

首先需要获得这个固定的数字,这里使用frida来hook掉check方法,随便输入一个数字然后打印输出值,再打印减去用户输入数字的结果就可以得到这个固定数字(可以多试几个数字验证一下,确实是不管输入多少,都是同一个固定数字),frida的hook脚本如下:

Java.perform(function () {    console.log("===开始hook MainActivity===")    var mainActivity = Java.use("net.bluelotus.tomorrow.easyandroid.MainActivity")    //hook check方法    mainActivity.check.implementation = function (input, s) {        console.log("===check方法被调用===")        console.log("input:", input)        console.log("s:", s)        var result = this.check(input, s)        console.log("固定数字为:", result - input)        return result    }})

执行结果如图所示:

可以看到输入合适大小的数字时都是固定的数字1599503850,这里还有一个溢出漏洞,当数字过大溢出时,固定数字会发生改变。

然后用结果数字1835996258减去1599503850即236492408就是用户的正确输入了,我们把这个数字输入app中验证,成功获得flag。


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:SPEEDCoding 李北辰 李北辰《Bugku逆向题目-19.LoopAndLoop(阿里CTF)》

评论:0   参与:  0