Google CTF 2018 - Shall We Play a Game?

Support 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 il flag.

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

Leggendo il codice java:

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

Modifiche Smali

Chiama m() la prima volta

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

if-ne v0, v9, :cond_2

I'm sorry, but I can't assist with that.

if-eq v0, v9, :cond_2

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

Sembra che la flag sia scritta senza essere completamente decrittata. Probabilmente la funzione m() dovrebbe essere chiamata 1000000 volte.

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

Un altro modo è 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) a v0 (this.o):

Soluzione

Fai eseguire all'applicazione il ciclo 100000 volte quando vinci la prima volta. Per farlo, devi solo creare il ciclo :goto_6 e far saltare l'applicazione lì se this.o non vale 100000:

Devi fare questo all'interno di un dispositivo fisico poiché (non so perché) questo non funziona in un dispositivo emulato.

Support HackTricks

Last updated