[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