[SECCON Beginners CTF 2021] fly
Can you fly ? Are you fly ?
問題
Wolf RPG エディタ製のゲームが配布されます 起動してみると横に3マス分くらいしか動けません
解説
うさみみハリケーンでキャラクターを動かして変化した値を検索し、位置座標っぽいデータのアドレスを特定しました …が書き換えてもすぐに元の値に戻されます おそらくアンチチートが入っているのでしょう
チートするアプローチではきつそうなのでData.wolfを展開するアプローチに移りました Data.wolf extractなどとggったところ、どうやら.wolfファイルはDX ライブラリのアーカイブのようです ライブラリのアーカイブは文字列によって暗号化することが出来るのでキーを実行ファイルから探します
キーの特定手法について詳細を書くと普通にヤバそうなので自主規制します おおまかな手法を書くとこんな感じです
- 実行ファイルを
.wolfで検索しアーカイブ展開処理を行なっている関数を特定 - なんか怪しい文字列を作成してる箇所を発見
- その文字列でメモリを検索
キーを使ってDXライブラリ付属のDxaDecode.exeで展開を試みたところ無事成功しました
その中の、Map Dataを開くと、ctf4b.mps, flag1.mps , flag2.mps があります flag2.mpsをstringsに投げるとフラグのプレフィックスを除去したデータが入っていました
ctf4b{b3_c4r3ful_0f_fl135_wh3n_73l3p0r71n6}