# Google CTF 2018 - Vamos Jogar um Jogo?
Aprenda hacking AWS do zero ao avançado com htARTE (HackTricks AWS Red Team Expert)!
Outras formas de apoiar o HackTricks:
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Compartilhe seus truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) do github.
Baixe o APK aqui:
Vou fazer upload do APK para [https://appetize.io/](https://appetize.io) (conta gratuita) para ver como o apk está se comportando:
![](<../../.gitbook/assets/image (46).png>)
Parece que você precisa ganhar 1000000 vezes para obter a flag.
Seguindo os passos de [pentesting Android](./) você pode descompilar o aplicativo para obter o código smali e ler o código Java usando jadx.
Lendo o código java:
![](<../../.gitbook/assets/image (47).png>)
Parece que a função que vai imprimir a flag é **m().**
## **Alterações no Smali**
### **Chamando m() pela primeira vez**
Vamos fazer o aplicativo chamar m() se a variável _this.o != 1000000_ para fazer isso, basta mudar a condição:
```
if-ne v0, v9, :cond_2
```
# Google CTF 2018: Shall we play a game?
---
## Introduction
In this challenge, we are provided with an Android application named "Shall we play a game?". The goal is to find the flag by analyzing the app's behavior and identifying any vulnerabilities that can be exploited.
## Reconnaissance
### APK Analysis
Upon decompiling the APK file, we can analyze the source code to understand how the app functions and identify potential security flaws.
### Static Analysis
By reviewing the code and resources, we can look for hard-coded secrets, insecure data storage, or any other weaknesses that could lead to a security compromise.
### Dynamic Analysis
Running the app in a controlled environment allows us to observe its runtime behavior, network communication, and interactions with the device to uncover any exploitable vulnerabilities.
## Exploitation
Once we have identified a potential vulnerability, we can proceed with exploiting it to gain unauthorized access, escalate privileges, or manipulate the app's behavior to reveal the flag.
## Conclusion
By combining thorough reconnaissance, careful analysis, and precise exploitation techniques, we can successfully uncover the flag in the "Shall we play a game?" Android app.
```
if-eq v0, v9, :cond_2
```
![Antes](<../../.gitbook/assets/image (48).png>)
![Depois](<../../.gitbook/assets/image (49).png>)
Siga os passos do [pentest Android](./) para recompilar e assinar o APK. Em seguida, faça o upload para [https://appetize.io/](https://appetize.io) e veja o que acontece:
![](<../../.gitbook/assets/image (50).png>)
Parece que a flag está escrita sem estar completamente descriptografada. Provavelmente a função m() deve ser chamada 1000000 vezes.
**Outra maneira** de fazer isso é não alterar a instrução, mas mudar as instruções comparadas:
![](<../../.gitbook/assets/image (55).png>)
**Uma outra maneira** é, em vez de comparar com 1000000, definir o valor como 1 para que this.o seja comparado com 1:
![](<../../.gitbook/assets/image (57).png>)
Uma quarta maneira é adicionar uma instrução para mover o valor de v9 (1000000) para v0 _(this.o)_:
![](<../../.gitbook/assets/image (58).png>)
![](<../../.gitbook/assets/image (52).png>)
## Solução
Faça o aplicativo executar o loop 100000 vezes quando você vencer pela primeira vez. Para fazer isso, você só precisa criar o loop **:goto\_6** e fazer o aplicativo **pular para lá se `this.o`** não tiver o valor 100000\:
![](<../../.gitbook/assets/image (59).png>)
Você precisa fazer isso em um dispositivo físico, pois (não sei por que) isso não funciona em um dispositivo emulado.
Aprenda hacking AWS do zero ao avançado com htARTE (HackTricks AWS Red Team Expert)!
Outras maneiras de apoiar o HackTricks:
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Descubra [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou nos siga no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Compartilhe seus truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).