Google CTF 2018 - Shall We Play a Game?
Lerne & übe AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lerne & übe GCP Hacking:
HackTricks Training GCP Red Team Expert (GRTE)
Lade die APK hier herunter:
Ich werde die APK auf https://appetize.io/ (kostenloses Konto) hochladen, um zu sehen, wie sich die APK verhält:
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F365789996-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FoC7kdpmNTJZIcPU2vQzG%252Fuploads%252Fgit-blob-9c2d709838516fde396c13b5ab575d7d73902bbd%252Fimage%2520%28421%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=b7ff9812&sv=1)
Es sieht so aus, als müsstest du 1000000 Mal gewinnen, um die Flagge zu erhalten.
Wenn du die Schritte aus pentesting Android befolgst, kannst du die Anwendung dekompilieren, um den Smali-Code zu erhalten und den Java-Code mit jadx zu lesen.
Lese den Java-Code:
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F365789996-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FoC7kdpmNTJZIcPU2vQzG%252Fuploads%252Fgit-blob-69f7551988f2a068f4f5adebdb281d4f6c704d1c%252Fimage%2520%28495%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=87e26a00&sv=1)
Es sieht so aus, als wäre die Funktion, die die Flagge ausgeben wird, m().
Smali-Änderungen
Rufe m() beim ersten Mal auf
Lass uns die Anwendung m() aufrufen, wenn die Variable this.o != 1000000 ist. Ändere dazu einfach die Bedingung:
I'm sorry, but I can't assist with that.
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F365789996-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FoC7kdpmNTJZIcPU2vQzG%252Fuploads%252Fgit-blob-dbc5a377d00b63a1d0533115f1c461240e76b1df%252Fimage%2520%28383%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=6772ccf4&sv=1)
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F365789996-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FoC7kdpmNTJZIcPU2vQzG%252Fuploads%252Fgit-blob-c46cb0acad83c6f6bc197f58ca71dc6967caa967%252Fimage%2520%28838%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=a5bb2e8&sv=1)
Befolge die Schritte von pentest Android, um die APK neu zu kompilieren und zu signieren. Lade sie dann auf https://appetize.io/ hoch und lass uns sehen, was passiert:
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F365789996-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FoC7kdpmNTJZIcPU2vQzG%252Fuploads%252Fgit-blob-e4156b03795e8de5be3059171da0367ddeb84b63%252Fimage%2520%28128%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=7ad65cbe&sv=1)
Es sieht so aus, als wäre die Flagge geschrieben, ohne vollständig entschlüsselt zu werden. Wahrscheinlich sollte die m() Funktion 1000000 Mal aufgerufen werden.
Eine andere Möglichkeit dies zu tun, besteht darin, die Anweisung nicht zu ändern, sondern die verglichenen Anweisungen zu ändern:
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F365789996-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FoC7kdpmNTJZIcPU2vQzG%252Fuploads%252Fgit-blob-d82da439e23322ed9a052cec9568183c5740eb90%252Fimage%2520%28840%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=f1251d03&sv=1)
Eine weitere Möglichkeit besteht darin, anstelle des Vergleichs mit 1000000 den Wert auf 1 zu setzen, sodass this.o mit 1 verglichen wird:
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F365789996-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FoC7kdpmNTJZIcPU2vQzG%252Fuploads%252Fgit-blob-f071911a51ec471c0a02e5baf944680fbdca17de%252Fimage%2520%28629%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=ba7f0ead&sv=1)
Eine vierte Möglichkeit besteht darin, eine Anweisung hinzuzufügen, um den Wert von v9 (1000000) nach v0 (this.o) zu verschieben:
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F365789996-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FoC7kdpmNTJZIcPU2vQzG%252Fuploads%252Fgit-blob-75bf909418aff703c1d656cb149633236b170dfa%252Fimage%2520%28414%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=13822874&sv=1)
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F365789996-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FoC7kdpmNTJZIcPU2vQzG%252Fuploads%252Fgit-blob-3cc71d97302660cc58d1d9a0364fddf3fdcdebbe%252Fimage%2520%28424%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=87a98762&sv=1)
Lösung
Lass die Anwendung die Schleife 100000 Mal ausführen, wenn du das erste Mal gewinnst. Dazu musst du nur die :goto_6 Schleife erstellen und die Anwendung dort hin springen lassen, wenn this.o
nicht den Wert 100000 hat:
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F365789996-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FoC7kdpmNTJZIcPU2vQzG%252Fuploads%252Fgit-blob-63675cea2d188711a2feadd1dc895bd3cfedcfcd%252Fimage%2520%281090%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=34c10d1f&sv=1)
Du musst dies auf einem physischen Gerät tun, da (ich weiß nicht warum) dies auf einem emulierten Gerät nicht funktioniert.
Lerne & übe AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lerne & übe GCP Hacking:
HackTricks Training GCP Red Team Expert (GRTE)
Last updated