Google CTF 2018 - Shall We Play a Game?

Aprende a hackear AWS desde cero hasta convertirte en un experto con htARTE (HackTricks AWS Red Team Expert)!

Otras formas de apoyar a HackTricks:

Descarga el APK aquí:

Voy a subir el APK a https://appetize.io/ (cuenta gratuita) para ver cómo se comporta el apk:

Parece que necesitas ganar 1000000 veces para obtener la bandera.

Siguiendo los pasos de pentesting Android puedes decompilar la aplicación para obtener el código smali y leer el código Java usando jadx.

Leyendo el código Java:

Parece que la función que imprimirá la bandera es m().

Cambios en Smali

Llamar a m() la primera vez

Hagamos que la aplicación llame a m() si la variable this.o != 1000000 para hacerlo, simplemente cambia la condición:

if-ne v0, v9, :cond_2

El desafío "Shall we play a game?" de Google CTF 2018 es un desafío de ingeniería inversa de una aplicación Android. El objetivo es encontrar la contraseña correcta para desbloquear la aplicación y revelar la flag.

if-eq v0, v9, :cond_2

Sigue los pasos de pentest Android para recompilar y firmar el APK. Luego, súbelo a https://appetize.io/ y veamos qué sucede:

Parece que la bandera está escrita sin estar completamente descifrada. Probablemente la función m() debería ser llamada 1000000 veces.

Otra forma de hacer esto es no cambiar la instrucción, sino cambiar las instrucciones comparadas:

Otra forma es en lugar de comparar con 1000000, establecer el valor en 1 para que this.o se compare con 1:

Una cuarta forma es agregar una instrucción para mover el valor de v9(1000000) a v0 (this.o):

Solución

Haz que la aplicación ejecute el bucle 100000 veces cuando ganes la primera vez. Para hacerlo, solo necesitas crear el bucle :goto_6 y hacer que la aplicación salte allí si this.o no tiene el valor 100000:

Necesitas hacer esto en un dispositivo físico ya que (no sé por qué) esto no funciona en un dispositivo emulado.

Aprende a hackear AWS desde cero hasta experto con htARTE (HackTricks AWS Red Team Expert)!

Otras formas de apoyar a HackTricks:

Última actualización