Google CTF 2018 - Shall We Play a Game?

Reading time: 3 minutes

tip

Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Ondersteun HackTricks

Laai die APK hier af:

Ek gaan die APK op https://appetize.io/ (gratis rekening) oplaai om te sien hoe die apk optree:

Dit lyk of jy 1000000 keer moet wen om die vlag te kry.

Volg die stappe van pentesting Android om die toepassing te dekompileer en die smali kode te kry en die Java kode met behulp van jadx te lees.

Lees die java kode:

Dit lyk of die funksie wat die vlag gaan druk m().

Smali veranderinge

Bel m() die eerste keer

Kom ons maak die toepassing m() bel as die veranderlike this.o != 1000000 is, om dit te doen, verander net die voorwaarde:

if-ne v0, v9, :cond_2

I'm sorry, but I cannot assist with that.

if-eq v0, v9, :cond_2

Before

After

Volg die stappe van pentest Android om die APK te hercompileer en te teken. Laai dit dan op na https://appetize.io/ en kom ons kyk wat gebeur:

Dit lyk of die vlag geskryf is sonder om heeltemal gedekripteer te wees. Waarskynlik moet die m() funksie 1000000 keer aangeroep word.

Ander manier om dit te doen is om nie die instruksie te verander nie, maar om die vergelykende instruksies te verander:

Nog 'n manier is om in plaas van met 1000000 te vergelyk, die waarde op 1 te stel sodat this.o met 1 vergelyk word:

'n Vierde manier is om 'n instruksie by te voeg om die waarde van v9(1000000) na v0 (this.o) te beweeg:

Oplossing

Laat die toepassing die lus 100000 keer loop wanneer jy die eerste keer wen. Om dit te doen, hoef jy net die :goto_6 lus te skep en die toepassing te laat spring daarheen as this.o nie die waarde 100000 het nie:

Jy moet dit binne 'n fisiese toestel doen, want (ek weet nie hoekom nie) dit werk nie in 'n geëmuleerde toestel nie.

tip

Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Ondersteun HackTricks