elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


 


Tema destacado: Doble factor de autenticación o verificación en dos pasos


+  Foro de elhacker.net
|-+  Seguridad Informática
| |-+  Bugs y Exploits (Moderador: berz3k)
| | |-+  Usar Buffers libres en un Stack Overflow...¿?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Usar Buffers libres en un Stack Overflow...¿?  (Leído 4,382 veces)
nitr0us

Desconectado Desconectado

Mensajes: 208


#rm -fr /


Ver Perfil WWW
Usar Buffers libres en un Stack Overflow...¿?
« en: 12 Julio 2004, 04:23 »

Que tal...

Bueno, tengo una duda: En la mayoría de ejemplos sobre STACK OVERFLOWS ponen algo como:

Código:

...
int main(int argc,char **argv){
char buffer[1024];
strcpy(buffer,argv[1]);
}

Lógicamente vemos que pasando los 1024 bytes de buffer, más 8 bytes de alineamiento (si es compilado con las nuevas versiones de GCC , creo q apartir de la 3) y mas 8 bytes de registros a sobreescribir correspondientes ($EBP & $EIP) pues nos da el SEGMENTATION FAULT (SIGSEGV)... o sea, con tan solo 1040 bytes se desborda y podremos poner la shellcode dentro de 1032 bytes (ya que no podemos meter la shellcode en $ebp ni $eip por que en $eip va la direccion de memoria de nuestra shellcode ok).

Ahora mi duda es...

Código:

...
int main(int argc,char **argv){
char foo[12],nitro[8],lame[24],buffer[1024];
strcpy(buffer,argv[1]);
}
 
 
Entonces akí, para "OVERFLOWEAR" xD dicho programa, como en la stack fueron declarados primero dichos arreglos de tipo char, pues tendríamos que sobreeescribir los (1024+8)+(24+8)+(8+8)+(12+8)+(8..estos son los de los registros EBP Y EIP)... todos esos 8s sumados son los bytes de alineamiento ok... entonces tendríamos que meter 1108 bytes para obtener el desborde... Entonces puedo usar todos esos arreglos para meter mi shellcode ??

Y otra más.. como se la dirección donde he almacenado mi shellcode ??

En el texto de DEX
http://www.hakim.ws/textos/stackofdex.txt
Donde dice:
Citar:
Woops!, ya llenamos todo el buffer, ya sabemos que hacer con los 967
bytes restantes, ya sabemos que shellcode usar, pero... QUE DIRECCIONES
VAMOS A PONER?
Bueno, hay una forma de hacerlo sacando la dirección automáticamente de
%esp con una instrucción en ensamblador, que usan muchos exploits
locales:
-----------------------------------------------
void get_esp() {
__asm__("movl %esp, %eax");
}
-------------------------------------------------
 
 

Alguien podría poner alguna url sobre la explicación de dicha función ya que he buscado en google y no encuentro anda parecido :S... o si alguien ha visto un exploit usando esta función (yo si lo he visto por ahi pero no recuerdo que exploit), asi que si alguien tiene algún exploit x ahi, que pastee la url para analizarlo....

salu2...
En línea

byebye


Desconectado Desconectado

Mensajes: 5.093



Ver Perfil
Re: Usar Buffers libres en un Stack Overflow...¿?
« Respuesta #1 en: 12 Julio 2004, 10:09 »

esa funcion pone en eax el valor de esp.
En línea

neo_geno

Desconectado Desconectado

Mensajes: 39


Ver Perfil
Re: Usar Buffers libres en un Stack Overflow...¿?
« Respuesta #2 en: 14 Julio 2004, 19:15 »

-----------------------------------------------
void get_esp() {
__asm__("movl %esp, %eax");
}
-------------------------------------------------


es muy simple, como ia han dixo, pone eax en esp, pero ¿para qeu lo hace?, o sea, ¿de qeu sirve?, la respuesta es facil, al hacer eso, obtenemos la direccion del puntero de la pila, el qal sera la direccion a la qeu apunte la shellcode.
En línea

LLoramos al nacer pq venimos a parar a este inmenso mundo de dementes.
__________________________________________


El usuario ve cosas y se pregunta el porque, el hacker ve cosas y se pregunta el pq no hacerlo.
byebye


Desconectado Desconectado

Mensajes: 5.093



Ver Perfil
Re: Usar Buffers libres en un Stack Overflow...¿?
« Respuesta #3 en: 15 Julio 2004, 21:30 »

eax en esp no, esp en eax.
En línea

Rentero
Ex-Staff
*
Desconectado Desconectado

Mensajes: 1.164


La paciencia es la madre de la ciencia.


Ver Perfil
Re: Usar Buffers libres en un Stack Overflow...¿?
« Respuesta #4 en: 17 Julio 2004, 09:20 »

Haber, Mr. Potato.

Esto dices tu:
Citar
esa funcion pone en eax el valor de esp.

Pero esto dice http://www.hackemate.com.ar/mirrors/karpoff/archivos/CURSOASM.txt
Citar
La funci¢n de la orden MOV es, como su nombre da a entender, "mover" un
 valor. Pongamos un ejemplo:

    MOV AX,BX

    Esta ¢rden en lenguaje ensamblador, copiar  el contenido de BX en AX,
 conservando el valor de BX.

Segun yo entiendo -> tu dices que pone el primero en el segundo y el texto dice que pone el segundo en el primero...

Ahora que estoy aprendiendo ASm, ¿CON CUAL ME QUEDO?
En línea

Firmado.
Rentero
Ex-Staff
*
Desconectado Desconectado

Mensajes: 1.164


La paciencia es la madre de la ciencia.


Ver Perfil
Re: Usar Buffers libres en un Stack Overflow...¿?
« Respuesta #5 en: 17 Julio 2004, 09:31 »

Pues Mr. Potato creo que tienes tu razón, lo he mirado en otra pequeña introducción y lo dice como tú, aún así estoy todavia con la duda...

¿Como puede ser eso?
¿Puede ser por lo de ax, bx, etc->16 bit...y eax, ebx, etc-> 32?
P.D: Espero respuestas...
« Última modificación: 17 Julio 2004, 11:03 por neohex » En línea

Firmado.
byebye


Desconectado Desconectado

Mensajes: 5.093



Ver Perfil
Re: Usar Buffers libres en un Stack Overflow...¿?
« Respuesta #6 en: 17 Julio 2004, 13:19 »

vale, partamos de que es un movl y no un mov usea at&t:

En la sintaxis de AT&T el destino de una operacion se pone en el segundo parametro y la origen se pone en el primer parametro. (Al reves que en los Intel).
 
El nombre de los registros es precedido por el caracter porcentaje ("%").
 
Los valores inmediatos han de ser precedidos por el caracter "$".
 
El tamaqo de los operandos se especifica mediante un ultimo caracter de la instruccion:"b" (8-bits) | "w" (16-bits) | "l" (32-bits).

+ info aqui: http://www.publispain.com/supertutoriales/programacion/ensamblador/cursos/1/linasm.htm y en google.
En línea

Rentero
Ex-Staff
*
Desconectado Desconectado

Mensajes: 1.164


La paciencia es la madre de la ciencia.


Ver Perfil
Re: Usar Buffers libres en un Stack Overflow...¿?
« Respuesta #7 en: 17 Julio 2004, 22:58 »

Vale, gracias...ya está aclarado.
En línea

Firmado.
nitr0us

Desconectado Desconectado

Mensajes: 208


#rm -fr /


Ver Perfil WWW
Re: Usar Buffers libres en un Stack Overflow...¿?
« Respuesta #8 en: 18 Julio 2004, 09:59 »

Muy bien...

entonces la funcion get_esp() RETORNA la dirección de %eax y ahi es dond debo apuntar a %eip ya q ahi irán los nops y/o shellcode o me ekivoco?? pero he buscado ejemplos de como lo usan en exploits y aun no encuentro alguno....

y si, lo estuve testeando en FreeBSD y pues tuve q buscar shellcodes (execve("/bin/sh"))para Free BSD x86 y ya la tengo, ahora solamente necesito la MALDITA dirección a apuntar %eip... salu2
En línea

servomac

Desconectado Desconectado

Mensajes: 25


Powered by Debian Sarge & Kernel 2.6.7


Ver Perfil
Re: Usar Buffers libres en un Stack Overflow...¿?
« Respuesta #9 en: 19 Julio 2004, 06:33 »

Analiza un poco el nombre de la función ... si se llama get_esp() que es más probable, ¿que devuelva %esp o que devuelva %eax?
En línea

"Se necesita a un ladrón para atrapar a otro ladrón, y eso no lo enseña ningún catedrático." (HVC)
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines