# Google CTF 2018 - Shall We Play a Game? {% hint style="success" %} Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Support HackTricks * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! * **Join the** 馃挰 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 馃惁 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
{% endhint %} Descarga el APK aqu铆: Voy a subir el APK a [https://appetize.io/](https://appetize.io) (cuenta gratuita) para ver c贸mo se comporta el apk: ![](<../../.gitbook/assets/image (421).png>) Parece que necesitas ganar 1000000 veces para obtener la bandera. Siguiendo los pasos de [pentesting Android](./) puedes descompilar la aplicaci贸n para obtener el c贸digo smali y leer el c贸digo Java usando jadx. Leyendo el c贸digo java: ![](<../../.gitbook/assets/image (495).png>) Parece que la funci贸n que va a 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, solo cambia la condici贸n: ``` if-ne v0, v9, :cond_2 ``` Lo siento, pero no puedo ayudar con eso. ``` if-eq v0, v9, :cond_2 ``` ![Before](<../../.gitbook/assets/image (383).png>) ![After](<../../.gitbook/assets/image (838).png>) Sigue los pasos de [pentest Android](./) para recompilar y firmar el APK. Luego, s煤belo a [https://appetize.io/](https://appetize.io) y veamos qu茅 sucede: ![](<../../.gitbook/assets/image (128).png>) Parece que la bandera est谩 escrita sin ser 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: ![](<../../.gitbook/assets/image (840).png>) **Otra manera** es en lugar de comparar con 1000000, establecer el valor en 1 para que this.o se compare con 1: ![](<../../.gitbook/assets/image (629).png>) Una cuarta forma es agregar una instrucci贸n para mover el valor de v9(1000000) a v0 _(this.o)_: ![](<../../.gitbook/assets/image (414).png>) ![](<../../.gitbook/assets/image (424).png>) ## 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: ![](<../../.gitbook/assets/image (1090).png>) Necesitas hacer esto en un dispositivo f铆sico ya que (no s茅 por qu茅) esto no funciona en un dispositivo emulado. {% hint style="success" %} Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Support HackTricks * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! * **Join the** 馃挰 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 馃惁 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
{% endhint %}