nc nc命名netcat,直譯為 網路貓 。在CentOS 7查看幫助的解釋如下所示: 翻譯過來就是可以連接和重定向Sockets。通過查詢其他資料,可以看到nc命令功能確實非常多,它可以打開TCP連接,發送UDP包,監聽TCP/UDP埠,進行埠掃描等等。 基本語法 ...
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,或掃描下麵的二維碼添加關註: