文章目录

  • 前言
  • 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等工具完成渗透入侵

Linux 中 Netcat 工具的使用相关推荐

  1. linux常用工具awk,linux中awk工具

    awk sed以行为单位处理文件,awk比sed强的地方在于不仅能以行为单位还能以列为单位处理文件.awk缺省的行分隔符是换行,缺省的列分隔符是连续的空格和Tab,但是行分隔符和列分隔符都可以自定义, ...

  2. Linux中的工具使用【vim的存活级】

    Linux中的工具使用 工具: 1.程序的开发 1.1 软硬件的安装(yum) 功能:安装/卸载软件 指令(根目录):yum install app/yum removu app 指令(普通用户):s ...

  3. linux中top工具,Linux命令工具 top详解

    Linux命令工具 top详解 top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器.top是一个动态显示过程,即可以通过用户按键来不 ...

  4. linux中mtools工具_Linux中mtools命令起什么作用呢?

    摘要: 下文讲述Linux中mtools命令的功能说明,如下所示: mtools命令功能: 显示出linux下可模拟MS-DOS工具集的命令集合 mtools命令的语法格式: mtools [参数] ...

  5. linux中mtools工具_Linux mtools命令

    Linux mtools命令 Linux mtools命令用于显示mtools支持的指令. mtools为MS-DOS文件系统的工具程序,可模拟许多MS-DOS的指令.这些指令都是mtools的符号连 ...

  6. linux中mtools工具_Linux mtools命令 - Linux 教程 - 自强学堂

    Linux mtools命令用于显示mtools支持的指令. mtools为MS-DOS文件系统的工具程序,可模拟许多MS-DOS的指令.这些指令都是mtools的符号连接,因此会有一些共同的特性. ...

  7. linux中常见工具安装问题集锦

    前言 问题 解决 结尾 前言 经常和服务器打交道的同学,特别是服务器运维和开发的同学,会经常使用到一些工具和命令.然而,有时候一些新机器或者"有待考究的机器"可能啥都没有,就需要我 ...

  8. Linux中make工具及makefile文件

    一.make工具简介 1.make 工具通过一个称为 makefile 的文件(类似脚本)来完成并自动维护编译工作,针对目标(可执行文件)进行依赖性检测(要生成该可执行文件之前要有哪些中间文件)并执行 ...

  9. linux切换软件版本,Linux中dpkg工具update-alternatives实现符号链接软件版本的切换(转)...

    一.功能作用 update-alternatives是dpkg的实用工具,用来维护系统命令的符号链接,以决定系统默认使用什么命令. 在Debian系统中,我们可能会同时安装有很多功能类似的程序和可选配 ...

最新文章

  1. Oracle 10g安装64位图解流程
  2. 22.executor service Flask
  3. websocket中发生数据丢失_为什么事实上却发生了数据丢失,只有少部 分数据可以加载进来...
  4. 【java基础】map的基本使用与字符串中每个字符出现的次数统计
  5. 道格拉斯-普克 Douglas-Peuker(DP算法) python java实现
  6. 没有读过的书,就不要瞎推荐了!
  7. Dijkstra算法实现
  8. android ndk开发之Log日志(一)
  9. Python中乐高积木——函数
  10. 智能实验室-全能优化(Guardio) 5.10.0.1150
  11. 【.Net】C# 将Access中时间段条件查询的数据添加到ListView中
  12. R plot图片背景设置为透明_学习健明老师发布的R语言练习题的学习笔记(一)...
  13. 后端怎么接收map_史上最全,C++后端开发面试题与知识点汇总
  14. 大学毕业后5年决定命运(强烈推荐一看)
  15. 使用 Lagrange Multiplier解决带有一个条件限制的最优解问题
  16. .net core判断当前访问源是PC端还是移动端
  17. C语言课程设计|学生成绩管理系统(含完整代码)
  18. (matlab代码)绘制地震记录的F-K谱
  19. Java J2SE 系列视频教程(北京上学堂马士兵老师经典java讲义)
  20. 一句话说明java常量池及其存储的对象

热门文章

  1. 基于MIMO的滤波器组多载波调制技术(后期将附上MATLAB代码)
  2. 用 200 行 Python 代码掌握基本音乐理论
  3. studio 3t连接linux上的MongoDB
  4. DES加密解密kotlin版
  5. WDK_基于Fabric的区块链系统开发
  6. 关于如何修复移动热点无网络(无互联网连接)的问题
  7. 摄像头数字信号方式传输的 GMSL、FPD-Link、V-by-One 方式
  8. jpeg图像压缩原理
  9. 【XSY2498】贪吃蛇(bfs/dfs)
  10. 阿里云IoT启动“IoT合伙人”计划,投5亿赋能100万开发者