[日本語] [English]

Buttons

ファイル Buttons.jar が与えられた。

JD-GUIで逆コンパイルしてみると、printFlag関数があったが、この関数の処理は移動のログを参照するようだった。

java -jar Buttons.jar コマンドで実行してみると、ボタンが大量にある以下の画面が表示された。
適当にボタンを押してくと、押したボタンが無効化される場合と、「Illegal move, you lose」と書かれたダイアログが出て初期状態に戻る場合があった。

Buttons!

逆コンパイル結果をさらに読むと、isLegalMove 関数より、以下の条件を全て満たすボタンを押すことで進めていけそうであることがわかった。

そこで、逆コンパイル結果から grid のデータを取り出し、CyberChefで見やすいように加工した。

Find / Replace, 2 more - CyberChef

この結果を参考に 0 の位置のボタンを押していき、右下の旗のマークのボタンを押すと、flagが表示された。
また、標準出力にもflagが出力された。

buckeye{am4z1ng_j0b_y0u_b1g_j4va_h4ck3r}

writeup by MikeCAT

BuckeyeCTF 2021