hacktricks/mobile-pentesting/android-app-pentesting/google-ctf-2018-shall-we-play-a-game.md
2024-02-11 01:46:25 +00:00

5.8 KiB

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:

Pobierz APK tutaj:

Zamierzam przesłać APK na https://appetize.io/ (darmowe konto), aby zobaczyć, jak zachowuje się apk:

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:

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

Po

Postępuj zgodnie z krokami pentestu Androida, aby ponownie skompilować i podpisać plik APK. Następnie, przesłać go na https://appetize.io/ i zobaczyć, co się stanie:

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:

Inny sposób to zamiast porównywać z 1000000, ustawić wartość na 1, aby this.o był porównywany z 1:

Czwarty sposób to dodanie instrukcji przenoszącej wartość v9(1000000) do v0 (this.o):

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:

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: