Google CTF 2018 - Shall We Play a Game?

Erlernen Sie AWS-Hacking von Grund auf mit htARTE (HackTricks AWS Red Team Expert)!

Andere Möglichkeiten, HackTricks zu unterstützen:

Laden Sie die APK hier herunter:

Ich werde die APK auf https://appetize.io/ (kostenloses Konto) hochladen, um zu sehen, wie sich die APK verhält:

Es scheint, als müssten Sie 1000000 Mal gewinnen, um die Flagge zu erhalten.

Folgen Sie den Schritten aus Pentesting Android, um die Anwendung zu dekompilieren und den Smali-Code zu erhalten und den Java-Code mit jadx zu lesen.

Lesen des Java-Codes:

Es sieht so aus, als ob die Funktion, die die Flagge drucken wird, m(). ist.

Smali-Änderungen

Rufen Sie m() das erste Mal auf

Lassen Sie die Anwendung m() aufrufen, wenn die Variable this.o != 1000000 ist, um dies zu tun, ändern Sie einfach die Bedingung:

if-ne v0, v9, :cond_2

Google CTF 2018: Shall we play a game?


Android App Pentesting


  1. Challenge Description:

    You are provided with an APK file named game.apk. The challenge is to find the flag by playing the game.

  2. Tools Used:

    • JADX

    • Apktool

    • Android Emulator

  3. Steps:

    • Decompile the APK using JADX or Apktool.

    • Analyze the source code to understand the game logic.

    • Identify any vulnerabilities or backdoors.

    • Use an Android Emulator to run the app and interact with it.

    • Exploit the vulnerabilities to find the flag.

  4. Flag Format:

    • CTF{flag_here}

  5. Conclusion:

    This challenge tests your skills in reverse engineering and exploiting Android applications. It's a fun way to learn about mobile app security.

if-eq v0, v9, :cond_2

Folgen Sie den Schritten des Pentest Android, um die APK neu zu kompilieren und zu signieren. Laden Sie sie dann auf https://appetize.io/ hoch und schauen Sie, was passiert:

Es scheint, 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:

Eine weitere Möglichkeit besteht darin, anstelle von 1000000 mit dem Wert 1 zu vergleichen, sodass this.o mit 1 verglichen wird:

Ein vierter Weg ist, eine Anweisung hinzuzufügen, um den Wert von v9 (1000000) nach v0 (this.o) zu verschieben:

Lösung

Lassen Sie die Anwendung die Schleife 100.000 Mal durchlaufen, wenn Sie das erste Mal gewinnen. Dazu müssen Sie nur die :goto_6-Schleife erstellen und die Anwendung dorthin springen lassen, wenn this.o nicht den Wert 100.000 hat:

Sie müssen dies auf einem physischen Gerät durchführen, da (ich weiß nicht warum) dies auf einem emulierten Gerät nicht funktioniert.

Erlernen Sie AWS-Hacking von Grund auf mit htARTE (HackTricks AWS Red Team Expert)!

Andere Möglichkeiten, HackTricks zu unterstützen:

Last updated