[HACK] Duda con Buffer Overflow
__BoKeN__
boken__ at hotmail.com
Fri Oct 1 09:58:33 CEST 2004
Hola a todos.
En el siguiente codigo:
int main() {
char buf[80];
int cookie;
printf("buf: %08x cookie: %08x\n", &buf, &cookie);
gets(buf);
if (cookie == 0x41424344)
printf("you win!\n");
}
¿Como puedo hacer para que la condicional se cumpla?
Si la declaracion de las variables locales fuera esta:
int cookie;
char buf[80];
seria mas facil porque solo habria que rellenar la variable buf y
seguidamente estaria la variable cookie. Pero en el orden del ejemplo de
arriba, la pila almacena cookie en una direccion de memoria mas baja que buf
y por ello al desbordar buf no reescribo cookie.
Una solucion que he pensado es reesecribir RET con &buf y en buf escribir
codigo en ASM para que ponga en las direcciones de memoria de cookie los
valores deseados y despues que vuelva al verdadero RET. PROBLEMA: No se como
recuperar el antiguo RET para que siga la ejecucion normal del programa.
Alguien sabria darme una manera mas efectiva, elegante, operativa... Vamos
que funcione ;)
Un saludo a todos y gracias de antemano.
_________________________________________________________________
Moda para esta temporada. Ponte al día de todas las tendencias.
http://www.msn.es/Mujer/moda/default.asp
More information about the hacking
mailing list