当前位置: 首页 > web >正文

Linux 中 Netcat 工具的使用

文章目录

  • 前言
  • 1. 安装 Netcat
  • 2. 常用参数
  • 3. 使用示例
    • 3.1 端口扫描
    • 3.2 端口监听与连接
      • 3.2.1 TCP 协议监听连接
      • 3.2.2 UDP 协议监听连接
    • 3.3 文件传输
      • 3.3.1 服务端接收客户端文件
      • 3.3.2 服务端发送文件到客户端
      • 3.3.3 使用 pv(Pipe Viewer)工具显示文件传输进度
      • 3.3.4 打包传输文件夹
    • 3.4 shell 反弹

前言

Netcat(nc) 是 Linux 类系统上非常实用的网络工具,它能在网络中读写数据,如果配合使用其他工具和重定向,可以实现不少强大的功能

1. 安装 Netcat

通常在不同的操作系统上使用对应的软件管理工具都能很方便地下载 nc,以下为 CentOS 操作系统的下载命令

sudo yum install nc -y

2. 常用参数

nc 常用的参数如下表所示,更多参数可以使用命令 nc -h 查看详细信息

参数功能
-l绑定监听本地端口,以服务端模式运行
-k以服务端模式运行时,当前连接结束后继续监听
-n不使用 DNS 解析域名展示
-w指定连接动作的超时时间,单位秒
-z使用 0 I/O 模式, 连接成功后立即关闭连接,不进行数据传输,通常在端口扫描时使用
-u使用 udp 传输协议,不指定该参数默认为 tcp
-p指定本地主机与远端的通信端口
-r随机选择本地主机与远端的通信端口
-s设置本地主机送出数据包的网卡 IP,通常可以使用 ifconfig 命令查看本地主机的网卡 IP

3. 使用示例

3.1 端口扫描

nc 支持端口扫描功能,可用于发现一些在机器上开放的端口,以下为相关命令:

  1. 以 0 I/O 模式,使用 udp 协议扫描指定端口是否打开

    nc -v -z -u -w 3 127.0.0.1 10086
    
  2. 扫描多个端口,默认使用 tcp 协议

    nc -v -z -w 3 127.0.0.1 10086 10087
    
  3. 扫描端口范围,默认使用 tcp 协议

    nc -v -z -w 3 127.0.0.1 10086-10087
    

    在这里插入图片描述

3.2 端口监听与连接

如果想要测试两台主机是否能够通过某个开放端口联通,可以在一台机器上用 nc 监听该端口,然后在另一台机器上用 nc 尝试连接。如果两台机器能够正常连通的话,就可以相互发送数据并显示

3.2.1 TCP 协议监听连接

  1. 服务端监听端口,一直保持监听

    nc -l -k 127.0.0.1 10086
    
  2. 客户端指定端口连接

    nc -v -p 10087 127.0.0.1 10086
    

3.2.2 UDP 协议监听连接

  1. 服务端监听端口,指定 udp 协议
    nc -l -u 127.0.0.1 10086
    
    在这里插入图片描述
  2. 客户端连接服务端,指定 udp 协议
    nc -v -u -p 10087 127.0.0.1 10086
    
    在这里插入图片描述

3.3 文件传输

通过 nc 可以实现便捷的文件传输,只要配合相关命令将机器上的输入输出重定向即可

3.3.1 服务端接收客户端文件

  1. 服务端启动监听,并重定向 nc 输出到指定文件,则接收到的远端数据将被输出到文件中

    nc -l 127.0.0.1 10086 > fi.txt
    
  2. 客户端连接服务端,重定向输入为指定文件,则在连接上服务端时会将文件内容发送出去

    nc -v -p 10087 127.0.0.1 10086 < fi.txt
    

3.3.2 服务端发送文件到客户端

  1. 服务端启动监听,重定向输入为指定文件,则在客户端连接上时会发送文件数据到远端

    nc -l -k 127.0.0.1 10086 < fi.txt
    
  2. 客户端连接服务端,重定向输出到指定文件,则接收到服务端数据时会将其输出到文件

    nc -v -p 10087 127.0.0.1 10086 > fi.txt
    

3.3.3 使用 pv(Pipe Viewer)工具显示文件传输进度

  1. 服务端重定向 nc 输出到指定文件
    nc -l 127.0.0.1 10086 > fi.txt
    
  2. 客户端使用 pv 传输文件

    如机器上没有 pv 工具,使用包管理工具下载即可,CentOS 系统下载命令为 sudo yum install pv -y

    pv fi.txt | nc -v 127.0.0.1 10086
    
    在这里插入图片描述

3.3.4 打包传输文件夹

  1. 服务端通过 tar 命令打包文件夹,并将其输出通过管道层层传递,将其重置为 nc 连接的输入

    tar -zvcf - test | pv | nc -l 127.0.0.1 10086
    

    在这里插入图片描述

  2. 客户端连接服务端,并通过 tar 命令拆包

    nc -v -p 10087 127.0.0.1 10086 | pv | tar -zvxf -
    

    在这里插入图片描述

3.4 shell 反弹

这部分可以参考 远程代码执行(RCE)漏洞 中反弹 shell 的段落,实际上原理就是通过代码执行将被攻击机器的输入输出重定向到远端,远端攻击者使用nc等工具完成渗透入侵

http://www.xdnf.cn/news/11344.html

相关文章:

  • FastJson中JSONObject用法及常用方法总结
  • Process Explorer下载安装使用教程(图文教程)超详细
  • oracle数据库中的日期函数怎么用,oracle to_date时间函数使用详解
  • 前端gulp工具的使用方法及常用插件
  • IAR新建工程步骤(IAR Embedded Workbench for Renesas RH850)
  • RFC 简介
  • 各种常用不等式汇总
  • Redis、Memcache和MongoDB的区别
  • StarUML使用说明—用例图、时序图、活动图
  • MYSQL 存储过程详解
  • delphi2007、2010无法二次启动,报错 EditorLineEnds.ttr 另一个程序正在使用此文件
  • 出现java.lang.IllegalArgumentException异常处理
  • 屏幕截取招招看!教你十种屏幕抓取方法
  • 带通滤波器电路图大全(三款带通滤波器电路设计原理图详解)
  • 宝妈剪辑视频也养活了自己,辞职做自媒体一天3百,靠这5个网站
  • 计算机硬盘有坏道,电脑硬盘有坏道怎么办
  • marquee横向循环滚动
  • 125款程序员专属情人节表白网站【建议收藏】HTML+CSS+JavaScript
  • vscode下git的常见操作
  • Restorator 2007 Build 1729 汉化版
  • mac装载NTFS的u盘报错:com.apple.DiskManagement.disenter错误49223
  • LBS应用简介及值得关注的方向
  • C++ 内存池 -- C++ Memory Pool
  • 系统引导方式GRUB的详细介绍
  • C++利用 _findfirst与_findnext查找文件的方法
  • (一)UDP基本编程步骤
  • dz带模板跟全套插件 搭建一款属于自己的论坛
  • 开源免费的一个企业级商城系统
  • 林锐《高质量程序设计指南C/C++》笔记04:异常处理
  • C# Label显示多行文本及换行(WinForm/WebForm)