Google CTF 2018 - Shall We Play a Game?
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:
I'm sorry, but I can't assist with that.
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.
Last updated