答案1
这是 的经典用法netcat
。但这是unix.SE
我的答案将完全在unix中。
注意:netcat
在不同的发行版上有不同的名称:
netcat
nc
:某些发行版上的别名nc
:Linux 上的 GNU netcat 或 *BSD 上的 BSD netcatncat
:Nmap netcat,在大多数系统上一致
不同版本之间的选项netcat
有所不同,我将指出不同版本可能表现不同的地方。此外,我强烈建议安装 netcat () 的 nmap 版本,ncat
因为它的命令行选项在不同系统中是一致的。
我将在ncat
整个答案中使用 netcat 名称。
传输控制协议
要使用 TCP 来控制机器,netcat
您有两个选择:使用命名管道(适用于所有版本的 netcat)和使用-e
(仅存在于 linux 版本中,或者更准确地说,-e
在 *BSD 上执行完全不同的操作) 。
上服务器端您需要执行以下任一操作:
mkfifo pinkie
ncat -kl 0.0.0.0 4096 <pinkie | /bin/sh >pinkie
其中:0.0.0.0
是“所有接口”的占位符,使用特定IP将其限制为特定接口;-l
监听并-k
保持打开状态(在单个连接后不终止)。
另一个选项(在 linux/ncat 上)是使用:
ncat -kl 0.0.0.0 4096 -e /bin/sh
达到同样的结果。
上客户端您可以使用您的应用程序或简单地执行:
ncat <server ip> 4096
您可以控制服务器上的 shell,并且可以发送命令。
UDP协议
UDP 类似,但有一些限制。-k
没有 UDP 协议就无法使用-e
,因此需要使用 linux/ncat 来实现可重用的套接字。
上服务器端你做:
ncat -ukl 0.0.0.0 4096 -e /bin/sh
并在客户端(或从您的应用程序):
ncat -u <server ip> 4096
你又拥有了一个可以工作的 shell。