文章总结: 该文档分析了Bugku平台上的阿里CTF逆向题目LoopAndLoop,通过静态分析APK文件发现输入数字需经native方法校验,最终结果需等于1835996258才能获取flag。关键发现是check方法通过循环调用三个子方法对输入进行固定值加减运算,利用Frida工具hook可提取固定数字1599503850,通过逆向计算得出正确输入为236492408。文档提供了完整的解题步骤和可操作的Frida脚本示例。 综合评分: 91 文章分类: CTF,逆向分析,移动安全,漏洞分析,安全工具
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)》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。











评论