7.7 KiB
Google CTF 2018 - Shall We Play a Game?
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- サイバーセキュリティ会社で働いていますか? HackTricksで会社を宣伝したいですか?または、PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロードしたいですか?SUBSCRIPTION PLANSをチェックしてください!
- The PEASS Familyを見つけてください。独占的なNFTのコレクションです。
- 公式のPEASS&HackTricksのグッズを手に入れましょう。
- 💬 Discordグループまたはtelegramグループに参加するか、Twitterでフォローしてください🐦@carlospolopm。
- ハッキングのトリックを共有するには、PRを hacktricks repo と hacktricks-cloud repo に提出してください。
APKをここからダウンロードしてください:
APKをhttps://appetize.io/(無料アカウント)にアップロードして、APKの動作を確認します:
フラグを取得するには1000000回勝つ必要があるようです。
Androidのペントテストの手順に従って、アプリケーションを逆コンパイルしてsmaliコードを取得し、jadxを使用してJavaコードを読み取ることができます。
Javaコードを読む:
フラグを表示する関数は**m()**のようです。
Smaliの変更
最初の呼び出しでm()を呼び出す
変数_this.o != 1000000_の場合にアプリケーションがm()を呼び出すようにします。条件を変更するだけです:
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?
Challenge Description
This challenge is about an Android application that simulates a game. The goal is to find a vulnerability in the app and exploit it to gain access to the flag.
Initial Analysis
The first step is to decompile the APK file using a tool like JADX or apktool. Once decompiled, we can analyze the source code to identify potential vulnerabilities.
Reverse Engineering
In the source code, we find a class called MainActivity
that handles the main functionality of the app. By analyzing this class, we discover that the app communicates with a remote server using a custom protocol.
Network Communication
To understand the communication protocol, we need to intercept the network traffic between the app and the server. We can use tools like Wireshark or Burp Suite to capture and analyze the traffic.
Vulnerability Discovery
After analyzing the network traffic, we find that the app sends a request to the server with a parameter called command
. By manipulating this parameter, we can trigger a command injection vulnerability.
Exploitation
To exploit the command injection vulnerability, we can send a malicious command as the value of the command
parameter. This command will be executed on the server, allowing us to gain control and access the flag.
Conclusion
By analyzing the source code and intercepting the network traffic, we were able to discover and exploit a command injection vulnerability in the Android app. This allowed us to gain control of the server and access the flag.
if-eq v0, v9, :cond_2
Androidのペントテストの手順に従って、APKを再コンパイルして署名します。その後、https://appetize.io/にアップロードして、何が起こるか見てみましょう:
フラグが完全に復号化されずに書かれているようです。おそらくm()関数を1000000回呼び出す必要があります。
これを行う別の方法は、命令を変更せずに比較する命令を変更することです:
別の方法は、1000000ではなく1と比較するように値を設定することです。これにより、this.oが1と比較されます:
4番目の方法は、v9(1000000)の値をv0(this.o)に移動する命令を追加することです:
解決策
アプリケーションが最初に勝った場合に、ループを100000回実行するようにします。これを行うには、:goto_6ループを作成し、アプリケーションが**_this.oの値が100000でない場合にそこにジャンプするようにします**:
これは物理デバイス内で行う必要があります(なぜかはわかりません)。
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- サイバーセキュリティ企業で働いていますか? HackTricksで会社を宣伝したいですか?または、PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロードしたりしたいですか? SUBSCRIPTION PLANSをチェックしてください!
- The PEASS Familyを発見しましょう、私たちの独占的なNFTのコレクション
- 公式のPEASS&HackTricks swagを手に入れましょう
- 💬 DiscordグループまたはTelegramグループに参加するか、Twitter 🐦@carlospolopmをフォローしてください。
- ハッキングのトリックを共有するには、PRを hacktricks repo と hacktricks-cloud repo に提出してください。