読者です 読者をやめる 読者になる 読者になる

Google CTF 2016 Mobile Write-up

1問目はまずAPKをデコンパイルするとstrings.xmlgithubのアカウント名が書いてあるのでそのユーザーのリポジトリをcloneする.
この人.
github.com

gitのログを見ると間違えてkeystoreを上げてしまっているコミットがあるのでそこまで戻す.

デコンパイルしたソースを読むとBroadcastReceiverでリクエストを受け取り結果を送ってくれるようなので,他のアプリからリクエストを送る.
同じkeystoreでコンパイルされたアプリからのBroadcastしか受信しないようになっているので,testAppをBroadcast発行アプリに書き換えて実行すれば,3つあるActivityの中の1つがFlagを返してくれるようになっている.

3問目はこのkeystoreのパスワードの文字列がそのままFlag.

2問目はkeystoreは関係していないが同じくBroadcastで通信を行う.単純ななSQLインジェクションが存在するので,flagカラムの文字列をLIKEを使って割り出してLog.dなどで出力するようにし,指定されたサーバーにアプリをアップロードすれば数分~数十分後にアプリをインストールするちょっと前から一定時間のログが吐き出されるので,出力したFlagを探せば良い.

CTF開始直後はアップロードしてサーバー側でログを出力する部分にバグが有り,アップロードしたものの最初の数分間はメッセージを含め何も出力されず混乱させた後,10分くらい後にログが吐かれていた.
しかしそのログが,アプリをインストールしてからBobbyApplicationを起動したちょっと後までのログのみで,自分のアプリは起動されておらず何かもうひと工夫必要なのかと考えさせられた.
実はただのバグだったようで,日本時間の昼頃には直っていた.キレた.