zoukankan      html  css  js  c++  java
  • Linux 基础教程 28-nc命令

    nc

        nc命名netcat,直译为网络猫。在CentOS 7查看帮助的解释如下所示:

    ncat - Concatenate and redirect sockets
    

    翻译过来就是可以连接和重定向Sockets。通过查询其他资料,可以看到nc命令功能确实非常多,它可以打开TCP连接,发送UDP包,监听TCP/UDP端口,进行端口扫描等等。

    基本语法

    nc [选项] [主机名] [端口]
    

    常用参数如下所示:

    参数 说明
    -4 仅使用IPv4
    -6 仅使用IPv6
    -c,--sh-exec [command] 执行给定的命令,同/bin/sh
    -e,--exec [command] 执行给定的命令
    -m,--max-conns [n] 设置同时连接的最大数
    -d,--delay [time] 设置读/写的等待时间
    -o,--output [filename] 将会话的数据保存为文件
    -i,--idle-timeout [time] 读/写空闲超时时间
    -p,--source-port port 指定本机使用的通信端口
    -s,--source addr 指定远程通信的主机地址
    -l,--listen 监听传入的连接信息
    -k,--keep-open 在监听模式中接收多个连接信息
    -n,--nodns 直接使用IP地址,不解析域名
    -t,--telnet 响应telnet请求
    -u,--udp 使用UDP替换默认的TCP
    -v,--verbose 显示详细的输出信息
    -w,--wait [time] 设置连接超时时间,单位为秒
    -z 建立连接后马上断开,不发送和接收任何数据,即Zero-I/O模式,仅用于测试连接状态

    示例

    1.实现QQ的功能

    • 在本地终端监听一个端口
    nc -l 9999
    
    • 在另一台服务器中输入以下命令建立连接
      nc 连接服务器IP 9999
    
    • 在任何一个服务器上输入的信息都将发送到另一台服务器上面

    2.端口扫描

        在Linux中虽然有专业的端口扫描端口工具,如nmap,但如果我们只想知道端口是否处理开放状态,nc命令其实也是可以胜任的。下面演示就是扫描本机端口20-25

    [root@localhost ~]# nc -z -v -n -w 2 127.0.0.1 20-25
    nc: connect to 127.0.0.1 port 20 (tcp) failed: Connection refused
    nc: connect to 127.0.0.1 port 21 (tcp) failed: Connection refused
    Connection to 127.0.0.1 22 port [tcp/*] succeeded!
    nc: connect to 127.0.0.1 port 23 (tcp) failed: Connection refused
    nc: connect to 127.0.0.1 port 24 (tcp) failed: Connection refused
    Connection to 127.0.0.1 25 port [tcp/*] succeeded!
    
    

        当连接到服务器上的某个端口时,监听该端口的服务会传送一个Banner(类似于一条欢迎消息)信息,这个Banner一般都会显示自身程序的版本号等信息。而黑客就要可以利用这些信息做入侵策略。从上面我们可以看到22端口处于开放状态,因此我们就可以获取端口22的Banner信息

    [root@localhost ~]# nc -v 127.1 22
    Ncat: Version 7.50 ( https://nmap.org/ncat )
    Ncat: Connected to 127.0.0.1:22.
    SSH-2.0-OpenSSH_7.4
    

        从上面信息可以看到SSH的版本,如果这个版本的SSH有漏洞的话,就可以被黑客给利用了。

    3.传输文件

        在Linux传输文件,通常使用FTP和SCP,为什么还需要使用nc命令了?其实nc命令传输文件有其独有的优势,即只需要选择一个端口就可以在两台服务器间传输文件,而不需要进行任何配置,也不需要像FTP和SCP那样验证用户名和密码等信息。

    • 在文件的发送端,启动监听端口并准备好相应的文件
    nc -v -l 9999 < out.txt
    
    • 在文件的接收端,使用以下命令接收数据
    [root@localhost ~]# nc -v -n 服务器IP地址 9999 > in.txt
    [root@localhost ~]#  ll in.txt
    -rw-r--r-- 1 root root 25 7月  23 00:08 in.txt
    
    • 此时在发送端可以看到如下信息
    [root@localhost ~]# nc -v -l 9999 < out.txt 
    Connection from 客户端IP地址 port 9999 [tcp/distinct] accepted
    

    4.传输文件夹

        如果需要传输多个文件或文件夹,nc是不是就无法完成了?这时就需要使用tar命令了。

    • 使用管道技术,将tar的输出通过管道传给nc
    [root@localhost~]# tar -cvPf - ~/out | nc -l 9999
    /root/out/
    /root/out/out.txt
    /root/out/eip.sh
    
    • 在客户端连接9999端口,然后将接收到数据通过tar解压
    [root@localhost ~]# nc -n 服务器IP地址 9999 | tar -xvPf -
    /root/out/
    /root/out/out.txt
    /root/out/eip.sh
    

    本文同步在微信订阅号上发布,如各位小伙伴们喜欢我的文章,也可以关注我的微信订阅号:woaitest,或扫描下面的二维码添加关注:
    MyQRCode.jpg

  • 相关阅读:
    JS高级拖拽
    JS高级Date类
    JS高级闭包
    JS笔记整理
    JS高级解决函数内的this指向
    JS高级事件委托
    JS高级 事件对象
    JS中级面向对象
    JS中级
    JS高级
  • 原文地址:https://www.cnblogs.com/surpassme/p/9368484.html
Copyright © 2011-2022 走看看