Google CTF 2018 - Shall We Play a Game?

Support HackTricks

Preuzmite APK ovde:

Planiram da uploadujem APK na https://appetize.io/ (besplatan nalog) da vidim kako se apk ponaša:

Izgleda da treba da pobedite 1000000 puta da biste dobili zastavu.

Prateći korake iz pentesting Android možete dekompilirati aplikaciju da dobijete smali kod i pročitate Java kod koristeći jadx.

Čitajući java kod:

Izgleda da funkcija koja će ispisati zastavu je m().

Smali promene

Pozvati m() prvi put

Hajde da napravimo da aplikacija pozove m() ako je varijabla this.o != 1000000 da bismo to uradili, samo promenite uslov:

if-ne v0, v9, :cond_2

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

if-eq v0, v9, :cond_2

Pratite korake pentest Android da ponovo kompajlirate i potpišete APK. Zatim, otpremite ga na https://appetize.io/ i hajde da vidimo šta će se desiti:

Izgleda da je zastava napisana bez potpunog dekriptovanja. Verovatno bi trebalo pozvati m() funkciju 1000000 puta.

Drugi način da se to uradi je da se ne menja instrukcija, već da se promene uporedne instrukcije:

Još jedan način je da umesto poređenja sa 1000000, postavite vrednost na 1 tako da se this.o upoređuje sa 1:

Četvrti način je da dodate instrukciju da prebacite vrednost v9(1000000) u v0 (this.o):

Rešenje

Neka aplikacija izvrši petlju 100000 puta kada prvi put pobedite. Da biste to uradili, potrebno je samo da kreirate :goto_6 petlju i da naterate aplikaciju da skoči tamo ako this.o ne vredi 100000:

Morate to uraditi na fizičkom uređaju jer (ne znam zašto) ovo ne funkcioniše na emuliranom uređaju.

Support HackTricks

Last updated