Google CTF 2018 - Shall We Play a Game?
最后更新于
最后更新于
在此下载APK:
我将上传APK到https://appetize.io/(免费账户)以查看APK的行为:
看起来您需要赢得1000000次才能获得flag。
按照Android应用渗透测试中的步骤,您可以反编译应用程序以获取smali代码,并使用jadx阅读Java代码。
阅读Java代码:
看起来打印flag的函数是 m().
让应用程序在变量 this.o != 1000000 时调用m(),为此,只需更改条件:
Download the APK from the challenge page and install it on your Android device.
Use JADX or apktool to decompile the APK.
Look for interesting parts in the source code, such as API endpoints, sensitive information handling, etc.
Search for the flag within the APK or by analyzing the app's behavior.
Submit the flag to the CTF platform to earn points.
Happy hacking! 🚀
按照Android渗透测试的步骤重新编译并签署APK。然后,将其上传到https://appetize.io/,看看会发生什么:
看起来旗标未完全解密就被写入。可能应该调用m()函数1000000次。
另一种方法是不更改指令,而是更改比较指令:
另一种方法是将值设置为1,这样this.o将与1进行比较:
第四种方法是添加一条指令将v9(1000000)的值移动到v0 (this.o):
当您第一次获胜时,使应用程序运行循环100000次。为此,您只需要创建**:goto_6循环,并使应用程序跳转到那里,如果this.o
**的值不是100000\:
您需要在物理设备内执行此操作,因为(我不知道为什么)在模拟设备中无法正常工作。