Google CTF 2018 - Shall We Play a Game?
Завантажте APK тут:
Я збираюся завантажити APK на https://appetize.io/ (безкоштовний обліковий запис), щоб побачити, як веде себе apk:
Здається, вам потрібно виграти 1000000 разів, щоб отримати прапорець.
Виконуючи кроки з тестування на проникнення Android, ви можете декомпілювати додаток, щоб отримати код smali та прочитати код Java за допомогою jadx.
Читаючи код Java:
Здається, що функція, яка виведе прапорець, - m().
Зміни в Smali
Виклик m() вперше
Давайте зробимо так, щоб додаток викликав m(), якщо змінна this.o != 1000000, для цього просто змініть умову:
Google CTF 2018 - Shall we play a game?
Task 1: Install the APK
Download the APK from the challenge page.
Install the APK on your device.
Task 2: Analyze the APK
Decompile the APK using JADX or APKTool.
Analyze the source code to understand its functionality.
Task 3: Identify the Vulnerability
Look for potential security vulnerabilities in the code.
Focus on areas like input validation, authentication mechanisms, and data storage.
Task 4: Exploit the Vulnerability
Develop an exploit based on the identified vulnerability.
Test the exploit to verify its effectiveness.
Task 5: Get the Flag
Use the exploit to extract the flag from the application.
Submit the flag to complete the challenge.
Дотримуйтесь кроків pentest Android, щоб перекомпілювати та підписати APK. Потім завантажте його на https://appetize.io/ і подивимося, що відбудеться:
Здається, прапорець написаний без повного розшифрування. Ймовірно, функцію m() слід викликати 1000000 разів.
Інший спосіб зробити це - не змінювати інструкцію, а змінити порівнювані інструкції:
Ще один спосіб - замість порівняння з 1000000 встановити значення 1, щоб порівнювалося з this.o з 1:
Четвертий спосіб - додати інструкцію для переміщення значення v9(1000000) до v0 (this.o):
Рішення
Зробіть так, щоб програма виконувала цикл 100000 разів, коли ви виграєте вперше. Для цього вам потрібно лише створити цикл :goto_6 і зробити так, щоб програма перескакувала туди, якщо this.o
не має значення 100000:
Вам потрібно зробити це на фізичному пристрої, оскільки (я не знаю чому) це не працює на емульованому пристрої.
Last updated