TCPサーバの接続情報、テキストファイル Dockerfile
、ELFファイル tour
が与えられた。
tour
をmain
関数があった。
Information to connect to a TCP server, a text file Dockerfile
, and a ELF file tour
were given.
Decompiling tour
via main
:
これは、都市0から始めて次に行く都市を指定していくことで、
合計コストが多くなりすぎないようにしながら全都市を訪れた後、都市0に戻ると flag.txt
の内容を出力する、というものであった。
コストは、移動元と移動先の都市の組み合わせで埋め込まれたテーブルを参照することでわかる。
以下の処理をするプログラムにより都市を訪れる順番を求め、求めた順番をサーバに入力することで、flagが得られた。
tour
からコストのテーブルを読み込む
This function starts a tour from city 0, has the user select the next city to visit, and prints the contents of flag.txt
when it returns to the city 0 after visiting all cities without consuming too much cost.
The cost is determined by looking up the embed table using the combination of the current city and the next city to move.
I obtained the flag by determing the order of cities of visit using a program that does following process, and entering the order to the server.
tour
.