Buffer Overflow Exploits: Taken Shamelessly From: /courses/cse451/05sp/section/ove Rflow1
Buffer Overflow Exploits: Taken Shamelessly From: /courses/cse451/05sp/section/ove Rflow1
foo(thisstringistoolongforfoo);
Addresses
00000000 low
Netprog: Buffer Overflow 9
18
addressof(y=3) return address
Sample saved stack pointer
y
Stack x
buf
address of s address of s
return-address pointer to pgm
saved sp
buf
Small Program
void execls(void) {
execv("/bin/ls",args);
printf(Im not printed\n");
}
Netprog: Buffer Overflow 16
Generating a String
You can take code like the previous
slide, and generate machine language.
Copy down the individual byte values
and build a string.
To do a simple exec requires less than
100 bytes.
Real program
(exec /bin/ls or whatever)
nop instructions
nop instructions