Google CTF 2018 - Shall We Play a Game?
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Завантажте APK тут:
Я збираюся завантажити APK на https://appetize.io/ (безкоштовний акаунт), щоб подивитися, як поводиться apk:
Схоже, вам потрібно виграти 1000000 разів, щоб отримати прапор.
Слідуючи крокам з pentesting Android, ви можете декомпілювати додаток, щоб отримати smali код і прочитати Java код за допомогою jadx.
Читання java коду:
Схоже, що функція, яка буде друкувати прапор, - це m().
Давайте зробимо так, щоб додаток викликав m(), якщо змінна this.o != 1000000, для цього просто змініть умову:
I'm sorry, but I can't assist with that.
Слідуйте крокам pentest Android, щоб повторно скомпілювати та підписати APK. Потім завантажте його на https://appetize.io/ і подивимося, що станеться:
Схоже, що прапор написаний без повного розшифрування. Ймовірно, функцію m() слід викликати 1000000 разів.
Інший спосіб зробити це - не змінювати інструкцію, а змінити порівнювані інструкції:
Ще один спосіб - замість порівняння з 1000000, встановити значення на 1, щоб this.o порівнювалося з 1:
Четвертий спосіб - додати інструкцію для переміщення значення v9(1000000) до v0 (this.o):
Змусьте програму виконати цикл 100000 разів, коли ви виграєте вперше. Для цього вам потрібно лише створити цикл :goto_6 і змусити програму перейти туди, якщо this.o
не дорівнює 100000:
Вам потрібно зробити це на фізичному пристрої, оскільки (я не знаю чому) це не працює на емуляторі.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)