美文网首页
好玩的nc命令

好玩的nc命令

作者: 狗狗胖妞 | 来源:发表于2019-09-26 18:26 被阅读0次

1.引子

一个应用的启动脚本在6上正常,但在7上就不正常了,检查后发现是nc在6和7上的使用方式发生了变化,如下是在6上的一段启动脚本

nohup java ...  &        //1.启动java进程并放到后台

COUNT=0
while [ $COUNT -lt 1 ]; do  //2.循环检查标志端口是否起来
    echo -e ".\c"
    sleep 1
    if [ -n "$SERVER_PORT" ]; then
        if [ "$SERVER_PROTOCOL" == "dubbo" ]; then
            COUNT=`echo status | nc -i 1 127.0.0.1 $SERVER_PORT | grep -c OK`    //需要改动的地方
        else
            COUNT=`netstat -an | grep $SERVER_PORT | wc -l`
        fi
    else
        COUNT=`ps -f | grep java | grep "$DEPLOY_DIR" | awk '{print $2}' | wc -l`
    fi
    if [ $COUNT -gt 0 ]; then
        break
    fi
done

echo "OK!"

上一行在7上改为如下

COUNT=`(echo status;sleep 1) | nc 127.0.0.1 $SERVER_PORT  2> /dev/null | grep -c OK` 

下面来解释一下:

1. nc的交互

nc交互.png

2.首先在6上man nc,参数i其解释为: specifies a delay time interval between lines of text sent and received(指定发送和接收的文本行之间的延迟时间间隔),但是在7上其作用已经发生了变化
直接使用echo status | nc 127.0.0.1 21553没有任何结果
这样我们明白了,我们通过(echo status;sleep 1) | nc ... 完成了"发送和接收的交互",只发送数据而"不延迟这一次交互的时间"是无法收到结果的

3.为何要在7上增加 2> /dev/null ?:因为在7上如果端口没有被监听是会有错误输出结果的,而在6上没有任何输出,所以将错误输出重定向了

nc报错输出结果.png

2. nc的使用

因为nc在不同的系统版本上用法是不一样的,所以在具体的使用场景下需要具体对待
参考文档: https://linux.cn/article-9190-1.html

1.端口扫描

$ nc -v -z -w 3 ip_addr port

# 但CentOS7新版的nc命令已取消了-z, 需输入重定向 < /dev/null
# 此方法在旧版本和新版本上都适用
$ nc -v ip_addr port </dev/null

2.客户端/服务端模式

# 在一个控制台,使用nc监听一个指定端口
$ nc -l 1234
# 在第二个控制台(或者第二台机器上),连接到监听的机器和端口上
$ nc 192.168.181.129 1234

端口间就会有个连接了。第二个控制端上面的任何输入都会传送到第一个上面,反之亦然。
在连接被建立之后,nc是不管哪边是服务端哪边是客户端的。使用EOF(‘^D’)可以中断连接。

3.传输文件和目录

3.1 将文件传到服务器监听的端口上
使用nc监听一个端口,捕捉到的输出重定向到一个文件中
$ nc -l 1234 > filename.out

第二台机器,连接到nc进程,导入一个文件数据来传输
$ nc host.example.com 1234 < filename.in

3.2 将文件传到本地服务器监听的端口上
使用nc监听一个端口,并将文件传入

$ nc -l 1234 < file_in

# 新版本的nc通过--send-only 选项指定文件传送完后关闭连接
$ nc -l 1234 --send-only < hh.py

第二台机器,连接到nc进程,指定一个文件名来接收

$ nc ip_addr 1234 > file_out

# 新版本的nc通过--recv-only 选项指定文件接收完后关闭连接
$ nc 192.168.181.129 1234 --recv-only > aaaa

4.与服务交互

有时候手动与服务器交互相比较使用用户接口是比较有用的。在troubleshooting的时候很有帮助。比如,接收web站点的主页时:
$ echo -n "GET / HTTP/1.0\r\n\r\n" | nc host.example.com 80
比如最开始的脚本中的这一行(echo status;sleep 1) | nc 127.0.0.1 $SERVER_PORT就是与服务的交互

5.通过nc创建后门

创建后门的命令为(在6上没找到这个功能):
nc -l 1234 -e /bin/bash

创建后门:



连接已创建后门的服务器:


6.通过nc进行端口转发

以上是nc的一些常用用法,还有一些其他用法可自行搜索

相关文章

  • 好玩的nc命令

    1.引子 一个应用的启动脚本在6上正常,但在7上就不正常了,检查后发现是nc在6和7上的使用方式发生了变化,如下是...

  • linux批量监测IP端口存活

    一、nc命令检测端口的用法安装nc工具yum install -y nc # nc -v -w 10 -z 192...

  • nc 命令

    netcat是网络工具中的瑞士军刀,它能通过TCP和UDP在网络中读写数据。通过与其他工具结合和重定向,你可以在脚...

  • spark-streaming windows netcat

    问题描述 SparkStreaming的WordCount Centos下安装nc命令工具 netcat(nc)是...

  • spark-streaming windows netcat

    问题描述 SparkStreaming的WordCount Centos下安装nc命令工具 netcat(nc)是...

  • spark-streaming windows netcat

    问题描述 SparkStreaming的WordCount Centos下安装nc命令工具 netcat(nc)是...

  • 网络编程利器netcat

    netcat(简写为nc)是什么? Mac内置了nc命令,使用man nc查看其帮助文档: 简单翻译一下,nc是一...

  • 【Linux】 Centos7 NC探测端口命令

    linux centos7 测试端口的连通性, 分别测试TCP端口与UDP端口安装nc命令 一、nc命令检测...

  • Linux指令学习(二)

    nc/netcat nc命令是netcat命令的简称,都是用来设置路由器。参数 主机:指定主机的IP地址或主机名称...

  • 内网渗透笔记[持续更新]

    主机发现命令 (需要 ping 命令) Windows Linux 端口扫描 (需要 nc 命令) Windows...

网友评论

      本文标题:好玩的nc命令

      本文链接:https://www.haomeiwen.com/subject/zbpmyctx.html