polyglot4b

TCPサーバの接続情報と、ファイル polyglot4b/polyglot4b.py およびその他のファイル群が与えられた。

polyglot4b/polyglot4b.py は、入力されたデータに対し file コマンドを実行し、その出力に以下の文字列がすべて含まれればflagを出力するというものだった。

Information for connecting to a TCP server, a file polyglot4b/polyglot4b.py, and some other files were given.

polyglot4b/polyglot4b.py executes the file command on the input data, and prints the flag if the output of the command contains all of these strings:

まず、manの情報から file コマンドは /ust/share/file/magic.mgc を参照することがわかったので、CS50 Sandbox からこのファイルを抜き出した。
file コマンドは入力によっては中身の情報を出力することもあるので、これに関わるであろう %s を検索していくと、「Vim swap file」が見つかった。
そこで、CS50 Sandbox 上で適当なファイルを Vim で編集し、作成された .swp ファイルをダウンロードした。
そして、このファイルのバージョン情報の部分を JPEGPNGGIFASCII に書き換えた以下のファイルを用意した。

From the "man" information, I found that the file command refers to /ust/share/file/magic.mgc. Then, I obtained this file from CS50 Sandbox.
The file commands emits information about file contents for some input, so I searched for %s, which should be related with this function, from the file, and found "Vim swap file".
Then, I started editing some file with Vim on CS50 Sandbox, and downloaded the appeared .swp file.
After that, I created this file by changing the version information to JPEGPNGGIFASCII.

zzzzz.swp

このファイルを Tera Term で「ファイル送信」した後、改行 (LF) を送信し、続けて QUIT と改行を送信すると、flagが得られた。

I obtained the flag by sending this file via "Send File" on Tera Term, and then sending a newline character (LF), QUIT, and another newline character.

ctf4b{y0u_h4v3_fully_und3r5700d_7h15_p0ly6l07}

SECCON Beginners CTF 2023