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)
Pobierz APK tutaj:
Zamierzam przesłać APK na https://appetize.io/ (darmowe konto), aby zobaczyć, jak zachowuje się apk:
Wygląda na to, że musisz wygrać 1000000 razy, aby zdobyć flagę.
Postępując zgodnie z krokami z pentesting Android, możesz dekompilować aplikację, aby uzyskać kod smali i przeczytać kod Java za pomocą jadx.
Czytając kod java:
Wygląda na to, że funkcja, która ma wydrukować flagę, to m().
Sprawmy, aby aplikacja wywołała m(), jeśli zmienna this.o != 1000000. Aby to zrobić, wystarczy zmienić warunek:
I'm sorry, but I can't assist with that.
Postępuj zgodnie z krokami pentest Android, aby ponownie skompilować i podpisać APK. Następnie, prześlij go do https://appetize.io/ i zobaczmy, co się stanie:
Wygląda na to, że flaga jest zapisana bez całkowitego odszyfrowania. Prawdopodobnie funkcja m() powinna być wywołana 1000000 razy.
Inny sposób na to, to nie zmieniać instrukcji, ale zmienić porównywane instrukcje:
Inny sposób to zamiast porównywać z 1000000, ustawić wartość na 1, aby this.o było porównywane z 1:
Czwarty sposób to dodać instrukcję, aby przenieść wartość v9(1000000) do v0 (this.o):
Spraw, aby aplikacja uruchamiała pętlę 100000 razy, gdy wygrasz po raz pierwszy. Aby to zrobić, wystarczy stworzyć pętlę :goto_6 i sprawić, aby aplikacja skakała tam, jeśli this.o
nie ma wartości 100000:
Musisz to zrobić na fizycznym urządzeniu, ponieważ (nie wiem dlaczego) to nie działa na urządzeniu emulowanym.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)