Secure Runner (200)

TCPサーバの接続情報と、ファイル in.c が与えられた。

Tera Term で指定のサーバに接続し、「ファイル送信」で in.c を送信すると、以下のメッセージが出力されて接続が切れた。

Information for connecting to a TCP server, and a file in.c were given.

I connected the server using Tera Term and sent the file in.c via "Send File". As a result, this message appeared and the connection was closed.

ERROR: Refusing to run file, invalid checksum (7a10d0ba)!

接続し直し、a を送信すると、以下のメッセージが出力されて接続が切れた。

Connecting again and sending a, this message appeared and the connection was closed.

ERROR: Refusing to run file, invalid checksum (e8b7be43)!

ここで出てきた e8b7be43 は、a のCRC-32値である。

さらに、Wireshark を用いて in.c を送信したときの通信を確認すると、最初の100バイトが最初のパケットで、残りの部分が次のパケットで送信されていた。

The value in the message e8b7be43 is the CRC-32 value of a.

I checked the communication while sending in.c using Wireshark. I found that the first 100 bytes are sent in one packet, and that the remaining part is sent in another packet.

in.c on Wireshark

最初のメッセージで出てきた 7a10d0ba は、この in.c の最初の100バイトのCRC-32値であった。

よって、1パケットで送られる程度に短く、かつCRC-32値が in.c 全体のCRC-32値の 38df65f2 であるようなC言語のソースコードを送信すると、それを実行してくれると推測した。
そして、そのようなソースコードを以下のプログラムで求めた。

The value 7a10d0ba, which was in the first message, is the CRC-32 value of this first 100 bytes of in.c.

From these findings, I guessed that sending a C source code which is short enough to be sent in a single packet and its CRC-32 value is 38df65f2, which is the CRC-32 value of the entire in.c, will make the source code be executed.
Therefore, I searched for such source code using this program.

solve.py

以下のソースコードが求まった。

As a result, this source code was found:

int system(char*);int main(){system("/bin/sh");}//c+}z8D)6

Tera Term でサーバに接続し、このソースコードを貼り付けすると、シェルを起動できた。
シェルで ls -al コマンドを実行すると、ファイル flag.txt があることがわかった。
コマンド cat flag.txt を実行すると、flagが得られた。

I succeeded to launch the shell by connecting to the server using Tera Term and pasting this source code.
I executed a command ls -al on the server, and found a file flag.txt.
I obtained the flag by executing a command cat flag.txt.

sdctf{n0w_th4t5_wh4t_i_ca1l_crcecurity!}

SDCTF 2023