Google CTF 2018 - Shall We Play a Game?

Google CTF 2018 - Oyun Oynayalım mı?

htARTE (HackTricks AWS Red Team Expert) ile sıfırdan kahramana kadar AWS hackleme öğrenin!

HackTricks'ı desteklemenin diğer yolları:

APK'yı buradan indirin:

APK'yı https://appetize.io/ (ücretsiz hesap) yükleyeceğim ve apk'nin nasıl davrandığını göreceğim:

Bayrağı alabilmek için 1000000 kez kazanmanız gerektiği görünüyor.

Pentesting Android adımlarını takip ederek uygulamayı decompile edebilir ve jadx kullanarak Java kodunu okuyabilirsiniz.

Java kodunu okuma:

Bayrağı yazdıracak olan fonksiyonun m(). olduğu görünüyor.

Smali değişiklikler

m() ilk kez çağrılacak

Uygulamanın this.o != 1000000 değişkeni ise m() fonksiyonunu çağırmasını sağlayalım, bunun için sadece koşulu değiştirin:

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.

Steps

  1. Decompile the APK: Use tools like JADX or APKTool to decompile the APK file.

  2. Analyzing the source code: Look for interesting code snippets, API endpoints, or hardcoded strings that might lead to the flag.

  3. Identify the vulnerability: Check for common vulnerabilities like insecure storage, input validation issues, or insecure network communication.

  4. Exploit the vulnerability: Once the vulnerability is identified, exploit it to extract the flag.

Conclusion

By following these steps and carefully analyzing the Android application, we can successfully find and extract the flag.

if-eq v0, v9, :cond_2

Pentest Android adımlarını izleyerek APK'yı yeniden derleyin ve imzalayın. Ardından, https://appetize.io/ adresine yükleyin ve ne olduğunu görelim:

Bayrağın tam olarak şifrelenmeden yazıldığı görünüyor. Muhtemelen m() işlevinin 1000000 kez çağrılması gerekiyor.

Bunu yapmanın başka bir yolu, talimatı değiştirmemek ancak karşılaştırılan talimatları değiştirmektir:

Başka bir yol, 1000000 ile karşılaştırmak yerine değeri 1 olarak ayarlamaktır, böylece this.o 1 ile karşılaştırılır:

Dördüncü bir yol, v9'un (1000000) değerini v0 (this.o) değerine taşımak için bir talimat eklemektir:

Çözüm

Uygulamanın ilk seferinde kazandığınızda döngüyü 100000 kez çalıştırmasını sağlayın. Bunun için sadece :goto_6 döngüsünü oluşturmanız ve uygulamanın this.o değeri 100000 olmadığında oraya atlamasını sağlamanız yeterlidir:

Bunu fiziksel bir cihazda yapmanız gerekmektedir çünkü (nedenini bilmiyorum) bu emüle edilmiş bir cihazda çalışmaz.

Sıfırdan başlayarak AWS hacklemeyi htARTE (HackTricks AWS Red Team Expert) öğrenin!

HackTricks'i desteklemenin diğer yolları:

Last updated