# 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 %}