hacktricks/mobile-pentesting/android-app-pentesting/google-ctf-2018-shall-we-play-a-game.md

5.2 KiB

Google CTF 2018 - Shall We Play a Game?

Leer AWS-hacking vanaf nul tot held met htARTE (HackTricks AWS Red Team Expert)!

Ander maniere om HackTricks te ondersteun:

Laai die APK hier af:

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

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

Deur die stappe van pentesting Android te volg, kan jy die aansoek dekompilieer om die smali-kode te kry en die Java-kode met jadx te lees.

Lees die Java-kode:

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

Smali-veranderinge

Roep m() die eerste keer aan

Laat ons die aansoek m() laat aanroep as die veranderlike this.o != 1000000 is om dit te doen, verander net die voorwaarde:

if-ne v0, v9, :cond_2

Google CTF 2018: Shall we play a game?

Android Application Analysis

The application is a game where the user needs to guess a number between 0 and 100. Upon analyzing the APK file, we found that the app uses Firebase for analytics and crash reporting. The main activity is com.google.ctf.shallweplayagame.MainActivity.

Vulnerability

The vulnerability lies in the fact that the app sends the guessed number to the server without any validation. This allows us to intercept the traffic and manipulate the response to reveal the flag.

Exploitation

  1. Use a proxy tool like Burp Suite to intercept the traffic.
  2. Play the game and intercept the request where the guessed number is sent.
  3. Modify the response to get the flag.

By exploiting this vulnerability, we can easily retrieve the flag and complete the challenge.

if-eq v0, v9, :cond_2

Voor

Na

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

Dit lyk asof die vlag geskryf is sonder om heeltemal ontsluit te word. Waarskynlik moet die m() funksie 1000000 keer geroep word.

'n Ander manier om dit te doen is om nie die instruksie te verander nie, maar om die vergelykingsinstruksies te verander:

'n Ander manier is om in plaas daarvan om met 1000000 te vergelyk, die waarde na 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 skuif:

Oplossing

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

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

Leer AWS-hacking vanaf nul tot held met htARTE (HackTricks AWS Red Team Expert)!

Ander maniere om HackTricks te ondersteun: