hacktricks/mobile-pentesting/android-app-pentesting/google-ctf-2018-shall-we-play-a-game.md
Translator workflow 75e8745ba3 Translated to Hindi
2023-11-06 08:38:02 +00:00

10 KiB

Google CTF 2018 - क्या हम एक खेल खेलें?

☁️ HackTricks क्लाउड ☁️ -🐦 ट्विटर 🐦 - 🎙️ ट्विच 🎙️ - 🎥 यूट्यूब 🎥

यहां APK डाउनलोड करें:

मैं https://appetize.io/ (मुफ्त खाता) पर APK अपलोड करने जा रहा हूँ ताकि देख सकूँ कि APK का व्यवहार कैसा है:

ऐसा लगता है कि आपको फ़्लैग प्राप्त करने के लिए 1000000 बार जीतना होगा।

Android पेंटेस्टिंग के चरणों का पालन करके आप एप्लिकेशन को डिकंपाइल करके स्माली कोड प्राप्त कर सकते हैं और jadx का उपयोग करके जावा कोड पढ़ सकते हैं।

जावा कोड पढ़ना:

ऐसा लगता है कि फ़्लैग प्रिंट करने वाला फ़ंक्शन m() है।

स्माली बदलाव

पहली बार m() को कॉल करें

हम ऐप्लिकेशन को m() को कॉल करने के लिए बनाएंगे अगर चर this.o != 1000000 है तो, बस शर्त को बदलें:

if-ne v0, v9, :cond_2

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

Shall we play a game?

This challenge is about a simple Android app that asks the user to play a game. The app has a button that, when clicked, sends a request to the server with the user's input. The server then responds with a message indicating whether the user has won or lost the game.

Analyzing the APK

To start, we need to analyze the APK file of the app. We can use tools like JADX or APKTool to decompile the APK and obtain the source code.

Once we have the source code, we can look for any vulnerabilities or interesting functions that could be exploited. In this case, we find a function called sendRequest() that is responsible for sending the user's input to the server.

Intercepting the request

To intercept the request sent by the app, we can use a tool like Burp Suite. By configuring our device to use a proxy, we can intercept and modify the requests made by the app.

Once we have intercepted the request, we can modify the parameters to see how the server responds. In this case, we can modify the input parameter to test different scenarios.

Exploiting the vulnerability

After analyzing the server's response, we can identify a vulnerability in the app. The server's response contains a flag that indicates whether the user has won or lost the game. However, the flag is not properly validated on the client side.

By modifying the server's response, we can change the flag to indicate that the user has won the game, regardless of their input. This can be done by intercepting the response and modifying the flag parameter.

Conclusion

In this challenge, we were able to exploit a vulnerability in an Android app by intercepting and modifying the requests and responses. By changing the flag in the server's response, we were able to win the game regardless of our input.

This highlights the importance of properly validating and securing user input in mobile apps to prevent vulnerabilities like this.

if-eq v0, v9, :cond_2

Before

After

Android पेंटेस्ट के चरणों का पालन करें ताकि APK को पुनः कंपाइल और साइन किया जा सके। फिर, इसे https://appetize.io/ पर अपलोड करें और देखें कि क्या होता है:

ऐसा लगता है कि फ्लैग पूरी तरह से डिक्रिप्ट किए बिना लिखा गया है। शायद m() फ़ंक्शन को 1000000 बार कॉल किया जाना चाहिए।

इसे करने का दूसरा तरीका यह है कि निर्देश को बदलने के बजाय तुलना की निर्देशों को बदलें:

एक और तरीका है कि 1000000 के साथ तुलना करने के बजाय, मान को 1 सेट करें ताकि this.o 1 के साथ तुलना की जाए:

चौथा तरीका है कि v9(1000000) के मान को v0 (this.o) में ले जाने के लिए एक निर्देश जोड़ें:

समाधान

जब आप पहली बार जीतते हैं, ऐप्लिकेशन को दौर 100000 बार चलाएं। इसके लिए, आपको केवल :goto_6 लूप बनाना होगा और ऐप्लिकेशन को वहां जाने के लिए जाने दें अगर _this.o_** का मान 100000 नहीं है।

आपको इसे एक भौतिक उपकरण के अंदर करना होगा क्योंकि (मुझे नहीं पता क्यों) इसे एक एम्युलेटेड उपकरण में काम नहीं करता है।

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥