# Google CTF 2018 - Czy zagramy w grę?
Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)! Inne sposoby wsparcia HackTricks: * Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLAN SUBSKRYPCJI**](https://github.com/sponsors/carlospolop)! * 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) github repos.
Pobierz APK tutaj: Zamierzam przesłać APK na [https://appetize.io/](https://appetize.io) (darmowe konto), aby zobaczyć, jak zachowuje się apk: ![](<../../.gitbook/assets/image (46).png>) Wygląda na to, że musisz wygrać 1000000 razy, aby zdobyć flagę. Postępując zgodnie z krokami z [pentestowania Androida](./), możesz zdekompilować aplikację, aby uzyskać kod smali i odczytać kod Java za pomocą jadx. Odczytanie kodu Java: ![](<../../.gitbook/assets/image (47).png>) Wygląda na to, że funkcja, która wyświetli flagę, to **m().** ## **Zmiany w kodzie Smali** ### **Wywołanie m() po raz pierwszy** Załóżmy, że aplikacja wywołuje m(), jeśli zmienna _this.o != 1000000_, aby to zrobić, po prostu zmień warunek: ``` if-ne v0, v9, :cond_2 ``` /hive/hacktricks/mobile-pentesting/android-app-pentesting/google-ctf-2018-shall-we-play-a-game.md # Google CTF 2018 - Shall we play a game? ## Introduction In this challenge, we are given an Android application called "Shall we play a game?" and our goal is to find the flag. The application has a login screen where we need to enter a username and password. After successful login, we are presented with a game screen. ## Analyzing the APK To start our analysis, we can extract the APK file from the Android device using tools like `adb` or by directly downloading it from the Google Play Store. Once we have the APK file, we can use tools like `apktool` or `dex2jar` to decompile it and analyze the code. ## Reverse Engineering the Code After decompiling the APK, we can start reverse engineering the code to understand its functionality. We can look for interesting classes, methods, and strings that might contain useful information. ## Finding the Flag In this challenge, the flag is hidden within the code. We can search for the string "CTF{" to find the flag. Once we find the flag, we can extract it and submit it to complete the challenge. ## Conclusion In this challenge, we learned how to analyze and reverse engineer an Android application to find hidden information like flags. This skill is essential for mobile application penetration testing and can help us identify vulnerabilities and secure our applications. ``` if-eq v0, v9, :cond_2 ``` ![Przed](<../../.gitbook/assets/image (48).png>) ![Po](<../../.gitbook/assets/image (49).png>) Postępuj zgodnie z krokami [pentestu Androida](./), aby ponownie skompilować i podpisać plik APK. Następnie, przesłać go na [https://appetize.io/](https://appetize.io) i zobaczyć, co się stanie: ![](<../../.gitbook/assets/image (50).png>) 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ównujące: ![](<../../.gitbook/assets/image (55).png>) **Inny sposób** to zamiast porównywać z 1000000, ustawić wartość na 1, aby this.o był porównywany z 1: ![](<../../.gitbook/assets/image (57).png>) Czwarty sposób to dodanie instrukcji przenoszącej wartość v9(1000000) do v0 _(this.o)_: ![](<../../.gitbook/assets/image (58).png>) ![](<../../.gitbook/assets/image (52).png>) ## Rozwiązanie Spowoduj, że aplikacja wykona pętlę 100000 razy, gdy wygrasz pierwszy raz. Aby to zrobić, wystarczy utworzyć pętlę **:goto\_6** i sprawić, że aplikacja **skoczy tam, jeśli `this.o`** nie ma wartości 100000\: ![](<../../.gitbook/assets/image (59).png>) Musisz to zrobić na fizycznym urządzeniu, ponieważ (nie wiem dlaczego) nie działa to na urządzeniu wirtualnym.
Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)! Inne sposoby wsparcia HackTricks: * Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLAN SUBSKRYPCJI**](https://github.com/sponsors/carlospolop)! * 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) github repos.