hacktricks/mobile-pentesting/android-app-pentesting/google-ctf-2018-shall-we-play-a-game.md

112 lines
5.8 KiB
Markdown
Raw Normal View History

# Google CTF 2018 - Zagramy w grę?
2022-04-28 16:01:33 +00:00
<details>
2024-02-11 01:46:25 +00:00
<summary><strong>Naucz się hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
2022-04-28 16:01:33 +00:00
2024-02-11 01:46:25 +00:00
Inne sposoby wsparcia HackTricks:
2024-02-03 02:15:34 +01:00
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)!
2024-02-11 01:46:25 +00:00
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) na GitHubie.
2022-04-28 16:01:33 +00:00
</details>
Pobierz plik APK tutaj:
Zamierzam przesłać plik APK na [https://appetize.io/](https://appetize.io) (konto darmowe), aby zobaczyć, jak zachowuje się apk:
![](<../../.gitbook/assets/image (421).png>)
2024-02-11 01:46:25 +00:00
Wygląda na to, że musisz wygrać 1000000 razy, aby zdobyć flagę.
Postępując zgodnie z krokami [testowania penetracyjnego Androida](./), możesz zdekompilować aplikację, aby uzyskać kod smali i przeczytać kod Javy za pomocą jadx.
Czytanie kodu Javy:
![](<../../.gitbook/assets/image (495).png>)
Wygląda na to, że funkcja, która wydrukuje flagę, to **m().**
2024-02-11 01:46:25 +00:00
## **Zmiany w kodzie Smali**
2024-02-11 01:46:25 +00:00
### **Wywołanie m() po raz pierwszy**
Zmodyfikujmy aplikację tak, aby wywoływała m(), jeśli zmienna _this.o != 1000000_, aby to zrobić, po prostu zmień warunek:
```
2024-02-11 01:46:25 +00:00
if-ne v0, v9, :cond_2
```
## Google CTF 2018: Shall we play a game?
---
### Introduction
2024-02-11 01:46:25 +00:00
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.
2024-02-11 01:46:25 +00:00
### Challenge Overview
2024-02-11 01:46:25 +00:00
The app presents a simple interface with a button that, when clicked, displays a message. By decompiling the APK and analyzing the source code, we can discover how the app processes user input and determine if there are any security flaws that can lead to the flag.
2024-02-11 01:46:25 +00:00
### Decompiling the APK
2024-02-11 01:46:25 +00:00
To decompile the APK, we can use tools like JADX or apktool. By examining the decompiled code, we can identify potential areas of interest such as input validation, cryptographic operations, or hidden functionalities that may reveal the flag.
### Finding the Flag
Through static analysis and dynamic testing, we can uncover vulnerabilities such as insecure data storage, improper input validation, or unintended behavior triggered by specific user actions. By exploiting these weaknesses, we can extract the flag and complete the challenge.
2024-02-11 01:46:25 +00:00
### Conclusion
2024-02-11 01:46:25 +00:00
The "Shall we play a game?" Android app challenge from Google CTF 2018 provides an opportunity to practice mobile application pentesting techniques and hone our skills in identifying and exploiting security issues in Android apps.
```
2024-02-11 01:46:25 +00:00
if-eq v0, v9, :cond_2
```
![Przed](<../../.gitbook/assets/image (383).png>)
![Po](<../../.gitbook/assets/image (838).png>)
Postępuj zgodnie z krokami [pentest Android](./), aby ponownie skompilować i podpisać plik APK. Następnie załaduj go na [https://appetize.io/](https://appetize.io) i zobaczmy, co się stanie:
![](<../../.gitbook/assets/image (128).png>)
2024-02-11 01:46:25 +00:00
Wygląda na to, że flaga jest zapisana bez pełnego odszyfrowania. Prawdopodobnie funkcja m() powinna być wywołana 1000000 razy.
**Inny sposób** na to jest nie zmieniać instrukcji, ale zmienić instrukcje porównywane:
![](<../../.gitbook/assets/image (840).png>)
**Innym sposobem** jest zamiast porównywać z 1000000, ustawić wartość na 1, aby this.o był porównywany z 1:
![](<../../.gitbook/assets/image (629).png>)
Czwarty sposób to dodanie instrukcji przeniesienia wartości v9(1000000) do v0 _(this.o)_:
![](<../../.gitbook/assets/image (414).png>)
![](<../../.gitbook/assets/image (424).png>)
2024-02-11 01:46:25 +00:00
## Rozwiązanie
Spowoduj, aby aplikacja wykonywała pętlę 100 000 razy po wygranej pierwszym razem. Aby to zrobić, wystarczy utworzyć pętlę **:goto\_6** i sprawić, aby aplikacja **przeskoczyła tam, jeśli `this.o`** nie ma wartości 100 000:
![](<../../.gitbook/assets/image (1090).png>)
2024-02-11 01:46:25 +00:00
Musisz to zrobić na fizycznym urządzeniu, ponieważ (nie wiem dlaczego) nie działa to na urządzeniu wirtualnym.
2022-04-28 16:01:33 +00:00
<details>
2024-02-11 01:46:25 +00:00
<summary><strong>Naucz się hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
2022-04-28 16:01:33 +00:00
2024-02-11 01:46:25 +00:00
Inne sposoby wsparcia HackTricks:
2024-02-03 02:15:34 +01:00
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)!
* Kup [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
2024-02-11 01:46:25 +00:00
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) na GitHubie.
2022-04-28 16:01:33 +00:00
</details>