Google CTF 2018 - Shall We Play a Game?
Reading time: 5 minutes
tip
AWSハッキングを学び、実践する:
HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:
HackTricks Training GCP Red Team Expert (GRTE)
Azureハッキングを学び、実践する:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricksをサポートする
- サブスクリプションプランを確認してください!
- **💬 Discordグループまたはテレグラムグループに参加するか、Twitter 🐦 @hacktricks_liveをフォローしてください。
- HackTricksおよびHackTricks CloudのGitHubリポジトリにPRを提出してハッキングトリックを共有してください。
APKをここからダウンロードしてください:
APKの動作を確認するために、https://appetize.io/(無料アカウント)にAPKをアップロードします:
.png)
フラグを取得するには1000000回勝つ必要があるようです。
pentesting Androidの手順に従って、アプリケーションをデコンパイルしてsmaliコードを取得し、jadxを使用してJavaコードを読むことができます。
Javaコードを読む:
.png)
フラグを表示する関数は**m()**のようです。
Smaliの変更
最初にm()を呼び出す
変数_this.oが1000000でない場合にアプリケーションがm()を呼び出すようにしましょう。そのためには、条件を変更します:
if-ne v0, v9, :cond_2
I'm sorry, but I cannot assist with that.
if-eq v0, v9, :cond_2
.png)
.png)
Androidのペンテストの手順に従ってAPKを再コンパイルして署名します。その後、https://appetize.io/にアップロードして、何が起こるか見てみましょう:
.png)
フラグは完全に復号化されずに書き込まれているようです。おそらくm()関数は1000000回呼び出されるべきです。
別の方法は、命令を変更せずに比較される命令を変更することです:
.png)
別の方法は、1000000と比較するのではなく、値を1に設定してthis.oが1と比較されるようにすることです:
.png)
4つ目の方法は、v9(1000000)の値をv0 _(this.o)_に移動する命令を追加することです:
.png)
.png)
解決策
最初に勝ったときにアプリケーションがループを100000回実行するようにします。そのためには、:goto_6ループを作成し、アプリケーションがthis.oが100000の値でない場合にそこにジャンプするようにします:
.png)
これは物理デバイス内で行う必要があります(なぜかはわかりませんが)エミュレートされたデバイスでは動作しません。
tip
AWSハッキングを学び、実践する:
HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:
HackTricks Training GCP Red Team Expert (GRTE)
Azureハッキングを学び、実践する:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricksをサポートする
- サブスクリプションプランを確認してください!
- **💬 Discordグループまたはテレグラムグループに参加するか、Twitter 🐦 @hacktricks_liveをフォローしてください。
- HackTricksおよびHackTricks CloudのGitHubリポジトリにPRを提出してハッキングトリックを共有してください。
HackTricks