picoCTF 2022 Bbbbloat
コンテスト中に解けなかった問題の復習です。
問題
Can you get the flag? Reverse engineer this binary.
バイナリファイル(bbbbloat)がダウンロードできる。
ヒント
なし
解法
他の人のWriteupを入れると、Ghidraを入れて、それを使えばOKみたいななのが多かったのですが、Ghidraを使ったことがないので、まずはインストールするところから。
https://ghidra-sre.org/ のトップページから、Githubに飛んで、.zipをダウンロードする。適当なフォルダに、展開する。
次に、Javaを準備する。自分は、homebrewのインストール自体は済んでいる状態だったので、
を参考にしながら、Javaを入れる。途中で、sudoしたりした。
$ java --version openjdk 18.0.1 2022-04-19 OpenJDK Runtime Environment Homebrew (build 18.0.1+0) OpenJDK 64-Bit Server VM Homebrew (build 18.0.1+0, mixed mode, sharing)
Javaが入った状態で、ghidraのディレクトリにあるディレクトリで、
./ghidraRun
をする。
で、ここから、Ghidraを適当なプロジェクトで開くが、何が表示されているのか、さっぱりわからない。
クリックしていると、「開発元を検証できないため開けません」が出てきて、うまく動かないので、
macOSからアプリに起動すると「開発元を検証できないため開けません。」と表示 | IODATA アイ・オー・データ機器
を参考にして、decompileを利用できるようにすると、画面の右端に、ソースが表示されるようになった!!!(ここまでがすごく長かった)。
entryから、呼び出しているファンクションを見つけて、入力を読み取っているであろう場所を探すと、
があって、local_48が0x86187、つまり、549255 のときでOKの模様。
実際に動かして、549255を入力して、フラグゲット!