Google CTF 2018 - Shall We Play a Game?

Google CTF 2018 - Giochiamo a un gioco?

Impara l'hacking di AWS da zero a eroe con htARTE (Esperto Red Team di HackTricks AWS)!

Altri modi per supportare HackTricks:

Scarica l'APK qui:

Sto per caricare l'APK su https://appetize.io/ (account gratuito) per vedere come si comporta l'apk:

Sembra che tu debba vincere 1000000 volte per ottenere la flag.

Seguendo i passaggi del pentesting Android puoi decompilare l'applicazione per ottenere il codice smali e leggere il codice Java usando jadx.

Lettura del codice java:

Sembra che la funzione che stamperà la flag sia m().

Modifiche Smali

Chiamata a m() la prima volta

Facciamo sì che l'applicazione chiami m() se la variabile this.o != 1000000 per farlo, basta cambiare la condizione:

if-ne v0, v9, :cond_2

Google CTF 2018: Shall we play a game?


Introduction

In this challenge, we are provided with an Android application named shall-we-play-a-game.apk. The goal is to find the flag by analyzing the application.

Steps

  1. Decompile the APK: Use tools like JADX or APKTool to decompile the APK file.

  2. Analyzing the Code: Look for interesting code snippets, API calls, or any suspicious behavior in the decompiled code.

  3. Identify the Vulnerability: Try to identify any security vulnerabilities such as insecure data storage, improper input validation, or insecure network communication.

  4. Exploit the Vulnerability: Once the vulnerability is identified, exploit it to extract the flag.

Conclusion

By following these steps and carefully analyzing the Android application, we can successfully find and extract the flag in the Google CTF 2018 challenge.

if-eq v0, v9, :cond_2

Segui i passaggi del pentest Android per ricompilare e firmare l'APK. Successivamente, caricalo su https://appetize.io/ e vediamo cosa succede:

Sembra che il flag sia scritto senza essere completamente decifrato. Probabilmente la funzione m() dovrebbe essere chiamata 1000000 volte.

Un altro modo per fare questo è non cambiare l'istruzione ma cambiare le istruzioni confrontate:

Un'altra via è invece di confrontare con 1000000, impostare il valore a 1 in modo che this.o venga confrontato con 1:

Un quarto modo è aggiungere un'istruzione per spostare il valore di v9(1000000) in v0 (this.o):

Soluzione

Fai eseguire all'applicazione il loop 100000 volte quando vinci la prima volta. Per farlo, devi solo creare il loop :goto_6 e far sì che l'applicazione salte lì se this.o non ha valore 100000:

Devi fare questo su un dispositivo fisico poiché (non so perché) non funziona su un dispositivo emulato.

Impara l'hacking di AWS da zero a esperto con htARTE (HackTricks AWS Red Team Expert)!

Altri modi per supportare HackTricks:

Last updated