首页 | 安全文章 | 安全工具 | Exploits | 本站原创 | 关于我们 | 网站地图 | 安全论坛
  当前位置:主页>安全文章>文章资料>网络基础>文章内容
nc使用技巧
来源:vittersafe.tk 作者:vitter 发布时间:2002-08-29  

nc这个小玩意儿应该大家耳熟能详,也用了N年了吧……这里不多讲废话,结合一些script说说它的使用技巧。
(文中所举的script都来自于nc110.tgz的文件包)

一、基本使用

Quack# nc -h
[v1.10]
想要连接到某处: nc [-options] hostname port[s] [ports] ...
绑定端口等待连接: nc -l -p port [-options] [hostname] [port]
参数:
-e prog 程序重定向,一旦连接,就执行 [危险!!]
-g gateway source-routing hop point[s], 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


MYPORT=23456

test "quot;$3"quot; "amp;"amp; echo "quot;too many args"quot; "amp;"amp; exit 1
test ! "quot;$1"quot; "amp;"amp; echo "quot;no args?"quot; "amp;"amp; exit 1
me=`echo $0 | sed 's .*/ '`
test "quot;$me"quot; = "quot;nzp"quot; "amp;"amp; echo '[compressed mode]'


if test "quot;$2"quot; ; then
test ! -f "quot;$1"quot; "amp;"amp; echo "quot;can't find $1"quot; "amp;"amp; exit 1
if test "quot;$me"quot; = "quot;nzp"quot; ; then
compress -c "lt; "quot;$1"quot; | nc -v -w 2 $2 $MYPORT "amp;"amp; exit 0
else
nc -v -w 2 $2 $MYPORT "lt; "quot;$1"quot; "amp;"amp; exit 0
fi
echo "quot;transfer FAILED!"quot;
exit 1
fi


if test -f "quot;$1"quot; ; then
echo -n "quot;Overwrite $1? "quot;
read aa
test ! "quot;$aa"quot; = "quot;y"quot; "amp;"amp; echo "quot;[punted!]"quot; "amp;"amp; exit 1
fi

if test "quot;$me"quot; = "quot;nzp"quot; ; then

nc -v -w 30 -p $MYPORT -l "lt; /dev/null | uncompress -c "gt; "quot;$1"quot; "amp;"amp; exit 0
else
nc -v -w 30 -p $MYPORT -l "lt; /dev/null "gt; "quot;$1"quot; "amp;"amp; exit 0
fi
echo "quot;transfer FAILED!"quot;

rm -f "quot;$1"quot;
exit 1

这样的话,我只要在A机器上先 QuackA# ncp ../abcd
listening on [any] 23456 ...
然后在另一台机器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

查看一下,文件传输完毕。

三、用于绑定端口——bsh

首先要清楚,如果你编译netcat时仅用如make freebsd之类的命令来编译的话,这个工
具是无法利用的——要define一个GAPING_SECURITY_HOLE它才会提供-e选项。

NC=nc

case "quot;$1"quot; in
?* )
LPN="quot;$1"quot;
export LPN
sleep 1
#注意这里nc的用法,参数-l是lister,-e是执行重定向
echo "quot;-l -p $LPN -e $0"quot; ; $NC -l -p $LPN -e $0 "gt; /dev/null 2"gt;"amp;1 "amp;
echo "quot;launched on port $LPN"quot;
exit 0
;;
esac


echo "quot;-l -p $LPN -e $0"quot; ; $NC -l -p $LPN -e $0 "gt; /dev/null 2"gt;"amp;1 "amp;

while read qq ; do
case "quot;$qq"quot; in

quack )
cd /
exec csh -i
;;
esac
done

要看看它是怎么使用的么?
quack# ./bsh 6666 "lt;-------输入,后面是程序输出
-l -p 6666 -e ./bsh
launched on port 6666
quack#
quack## nc localhost 6666 "lt;----------输入
-l -p 6666 -e ./bsh
quack "lt;----------输入,密码验证
Warning: imported path contains relative components
Warning: no access to tty (Bad file descriptor).
Thus no job control in this shell.
Cracker#

四、 用于端口扫描——probe

在我们常见的一些端口扫描程序中,如Vetescan这类以shell script写成的话,很多都
需要系统中装有netcat,原因何在呢?看看下面的script,你或许会明白一些。


DDIR=../data

GATE=192.157.69.11


UCMD='nc -v -w 8'

test ! "quot;$1"quot; "amp;"amp; echo Needs victim arg "amp;"amp; exit 1

echo '' | $UCMD -w 9 -r "quot;$1"quot; 13 79 6667 2"gt;"amp;1
echo '0' | $UCMD "quot;$1"quot; 79 2"gt;"amp;1


$UCMD -z -r -g $GATE "quot;$1"quot; 6473 2"gt;"amp;1
$UCMD -r -z "quot;$1"quot; 6000 4000-4004 111 53 2105 137-140 1-20 540-550 95 87 2"gt;"amp;1

echo 'UDP echoecho!' | nc -u -p 7 -s `hostname` -w 3 "quot;$1"quot; 7 19 2"gt;"amp;1
echo '113,10158' | $UCMD -p 10158 "quot;$1"quot; 113 2"gt;"amp;1
rservice bin bin | $UCMD -p 1019 "quot;$1"quot; shell 2"gt;"amp;1
echo QUIT | $UCMD -w 8 -r "quot;$1"quot; 25 158 159 119 110 109 1109 142-144 220 23 2"gt;"amp;1

echo ''
echo PASV | $UCMD -r "quot;$1"quot; 21 2"gt;"amp;1
echo 'GET /' | $UCMD -w 10 "quot;$1"quot; 80 81 210 70 2"gt;"amp;1


echo 'GET /robots.txt' | $UCMD -w 10 "quot;$1"quot; 80 2"gt;"amp;1


rservice bin bin 9600/9600 | $UCMD -p 1020 "quot;$1"quot; login 2"gt;"amp;1
rservice root root | $UCMD -r "quot;$1"quot; exec 2"gt;"amp;1
echo 'BEGIN big udp -- everything may look "quot;open"quot; if packet-filtered'
data -g "lt; ${DDIR}/nfs-0.d | $UCMD -i 1 -u "quot;$1"quot; 2049 | od -x 2"gt;"amp;1

nc -v -z -u -r "quot;$1"quot; 111 66-70 88 53 87 161-164 121-123 213 49 2"gt;"amp;1
nc -v -z -u -r "quot;$1"quot; 137-140 694-712 747-770 175-180 2103 510-530 2"gt;"amp;1
echo 'END big udp'
$UCMD -r -z "quot;$1"quot; 175-180 2000-2003 530-533 1524 1525 666 213 8000 6250 2"gt;"amp;1

iscan "quot;$1"quot; 21 25 79 80 111 53 6667 6000 2049 119 2"gt;"amp;1

if nc -w 5 -z -u "quot;$1"quot; 111 ; then
showmount -e "quot;$1"quot; 2"gt;"amp;1 #象showmount和rpcinfo的使用,可能会被逮到;)
rpcinfo -p "quot;$1"quot; 2"gt;"amp;1
fi
exit 0

感觉也没什么好说的,脚本本身说明了一切。当然象上面的脚本只是示范性的例子,真正地使用时,
这样扫描会留下大量的痕迹,系统管理员会额外小心;)

多试试,多想想,可能你可以用它来做更多事情——你可以参见nc110.tgz里script目录下的那
些脚本,从中获得一些思路。





 
[推荐] [评论(0条)] [返回顶部] [打印本页] [关闭窗口]  
匿名评论
评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
 §最新评论:
  热点文章
·北京地区设置ADSL猫(惟帆的 KM3
·关于ip地址分类
·浅谈watchdog timeout出现的原因
·利用snmp实现remote ping
·端口大全(1-100中文)
·从IRQ到IRQL(APIC版)
·使用kgdb调试linux内核及内核模
·基于PassThru的NDIS中间层驱动程
·支持 PS/2 与 USB 的键盘过滤驱
·一种网络劫持分析、调试与编程实
·利用iptables打破电信对路由方式
·绕过Copy-On-Write机制安装全局H
  相关文章
·端口大全(1-100中文)
·基于Telnet协议的攻击
·关于ip地址分类
·Sniffer 常见问题集(FAQ)
·NET 命令的基本用法
·ARP协议揭密
·工作组和域的区别
·构建小型的入侵检测系统(FreeBS
·关于对SQL注入80004005 及其它错
·利用ARP探测以太网中的活动主机
·浅谈watchdog timeout出现的原因
·使用rtsp-proxy突破电影站点的ip
  推荐广告
CopyRight © 2002-2022 VFocuS.Net All Rights Reserved