5.6 KiB
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!
- Adquira o swag oficial PEASS & HackTricks
- Descubra A Família PEASS, nossa coleção exclusiva de NFTs
- Junte-se ao 💬 grupo Discord ou ao grupo telegram ou siga-nos no Twitter 🐦 @carlospolopm.
- Compartilhe seus truques de hacking enviando PRs para os repositórios HackTricks e HackTricks Cloud do github.
Baixe o APK aqui:
Vou fazer upload do APK para https://appetize.io/ (conta gratuita) para ver como o apk está se comportando:
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:
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
Siga os passos do pentest Android para recompilar e assinar o APK. Em seguida, faça o upload para https://appetize.io/ e veja o que acontece:
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:
Uma outra maneira é, em vez de comparar com 1000000, definir o valor como 1 para que this.o seja comparado com 1:
Uma quarta maneira é adicionar uma instrução para mover o valor de v9 (1000000) para v0 (this.o):
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:
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!
- Adquira o oficial PEASS & HackTricks swag
- Descubra The PEASS Family, nossa coleção exclusiva de NFTs
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou nos siga no Twitter 🐦 @carlospolopm.
- Compartilhe seus truques de hacking enviando PRs para os repositórios do HackTricks e HackTricks Cloud.