RSFPWS - Intercepted
と同じゲームのプログラムと、そのゲームで用いるサーバのIPアドレスとポート番号が与えられた。
ゲームは一人称視点で移動ができるもので、その中に以下のような中に入るとflagが得られるという箱があった。
この箱には当たり判定があり、普通には入れないようだった。
A game program (same as one for RSFPWS - Intercepted)
and a pair of an IP address and a port number for the game was given.
In the game, we can move around in first-persom view.
There was a box which is said that entering inside the box will lead to getting the flag.
The box had solid walls and I couldn't enter inside that in a straightforward way.
与えられたゲームのデータをよく見ると、RARPG_Data/level0
というファイルがあり、これがマップを表していそうだった。
このファイルをバイナリエディタで開くと、前半部分にCube
やHint Text (2)
などの物の名前と考えられるデータがあった。
このあたりには名前の他にもデータがあり、実験の結果適当なデータを書き換えることでマップ上の物を消せることを発見した。
そのなかでも特に、0x2b58 番目のバイト (0-origin) を 0x57 から 0x58 に書き換えることで、
箱の側面の壁を消して入れる状態にできることを発見した。
Looking at the game data closely, I found a file RARPG_Data/level0
, which seemed to be the map data.
Viewing the file with a binary editor, I found strings that seemed to be names of objects like Cube
and Hint Text (2)
in the former part.
There are several other data around the strings.
After some experiments, I found that some objects in the game disappears when I modify appropriate data.
Specifically, I found that changing the 0x2b58-th byte (the first byte is 0th) from 0x57 to 0x58
removes the side wall of the box and enables me to enter the box.
この状態で箱に入り、後ろの方に行くと、flagが表示された。
After that, I entered the box and moved back, finding the flag displayed.
この状態でractf{
を検索すると、メモリ上にflagの文字列データが見つかった。
該当のデータをコピーし、
After that, I attached ractf{
, finding the string data of the flag on the memory.
I copied the data and processed via
flagの文字列を得るためのCyberChefのRecipe The Recipe for CyberChef to obtain the flag as a string