ペネトレーションしのべくん

さようなら、すべてのセキュリティエンジニア

本当のReversing初心者がGhidraでpicoCTF 2022「Bbbbloat」をただ解く

はじめに

ただのWriteupです。

https://play.picoctf.org/practice/challenge/255?category=3&originalEvent=70&page=1

Writeup

とりあえず実行してみると好きな数字を聞かれるので、答えたら「違う、そうじゃない」とのこと。

$ ./bbbbloat
What's my favorite number? 111
Sorry, that's not it!

GDBで解こうとしたら「(No debugging symbols found in bbbbloat)」と言われてしまいました。このシンボルというのがないと、デバッグできないらしいです。

しかたがないのでGhidraで開きます。適当なプロジェクトを開いて、bbbbloatをドラッグ&ドロップしました。

左中段のSymbol Treeからentryを選択して、右のDecompileを呼んでみます。FUN_00101307という関数が最初に実行されるっぽいです。

Symbol TreeからFUN_00101307を選択してDecompileを読みます。メッセージを表示した後、21行目でlocal_480x86187を比較していることが分かります。

PythonのREPLでint(0x86187)を実行すると、549255という値が返ってきます。これをbbbbloatに渡してやると、flagが出力されます。