###### tags: `InterKosenCTF2020` # [InterKosenCTF] Tip Toe ゲームのバイナリと素材が渡される. ![](https://i.imgur.com/0XCykbH.png) 向こう岸まで行くことができればクリアだが、道中どこのパネルが抜けるかわからないためたどり着けない.クリアするだけなら、少々コツと運があればクリアできる. しかし、そう甘くなく頑張ってクリアしても時間制限が設けられていた (画像はクリアのために後述のデバッグモードでやっている) ![](https://i.imgur.com/pzQSgTs.png) ゲームのチートといえばの、cheatengineで何とかできないか調べてみる.パネルの配列を特定したり、キャラクターの場所を変えたりできないか、いろいろやってみたけど、目に見える数字がないのでどうしてもうまくいかない(ゲームオーバーでアプリケーションを起動しなおすのもめんどくさい) cheatengineではメモリの中身もMemory Viewerから見れるので、フラグが展開されていないか確認してみるといくつか気になる文字列を見つけることができる. ![](https://i.imgur.com/l6SnEO1.png) `debug.argv[1]='debug' : debug mode activated.`という文字列が見れるので引数に`debug`を渡して起動してみると、デバッグ情報が見れるようになった. ![](https://i.imgur.com/o2uSrU7.png) どのパネルが落ちるかわかるように色付けされるようになり、クリア自体は簡単にできるようになる.ただ、先ほども言ったように時間制限(いつまでかは分からないが)あるので、`time`を変更する必要がある. `time`の値はわかるので、その値っぽいのを**int**で`smaller than`や`increased value`を駆使して絞る(floatやdoubleで検索すると(たぶん)1つ`time`の値と同じアドレスを見つけることができるが、単純に値の書き換えでは変更できない上、頑張って値を書き換えてもクリアにならない<-なんで...). ![](https://i.imgur.com/zVyibqm.png) 適当にそれっぽい値を`0`や負数を入れて`time`のアドレスを特定する ![](https://i.imgur.com/eprtTWq.png) 後は優雅にゴール! ![](https://i.imgur.com/C25zRvd.png) `KosenCTF{Let's_play_a_game_other_than_CTF}` 型で無限に時間に使ったの泣ける(`time`が小数で表されてるから`double`とかだと思うじゃん...)