elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
25 Mayo 2012, 13:13  


Tema destacado: Grupo de Facebook de elhacker.net

+  Foro de elhacker.net
|-+  Seguridad Informática
| |-+  Bugs y Exploits (Moderador: berz3k)
| | |-+  ¡¡¡ No puedo sobreescribir el RET !!!
0 Usuarios y 2 Visitantes están viendo este tema.
Páginas: 1 [2] Ir Abajo Respuesta Imprimir
Autor Tema: ¡¡¡ No puedo sobreescribir el RET !!!  (Leído 3,090 veces)
Ivanchuk


Desconectado Desconectado

Mensajes: 466


LLVM


Ver Perfil WWW
Re: ¡¡¡ No puedo sobreescribir el RET !!!
« Respuesta #15 en: 17 Enero 2011, 19:22 »

Sangrini me desangré explicandote!

Bue, olvida todo lo que dije, compilalo asi

Código:
gcc -fno-stack-protector -S -o vuln.s vuln.c

y pega el contenido del archivo de salida vuln.s asi se facilita la ayuda.
En línea

Sólo quien practica lo absurdo puede lograr lo imposible.

Join us @ http://foro.h-sec.org
Garfield07


Desconectado Desconectado

Mensajes: 1.123


¡Este año voy a por todas! JMJ 2011


Ver Perfil WWW
Re: ¡¡¡ No puedo sobreescribir el RET !!!
« Respuesta #16 en: 17 Enero 2011, 19:35 »

Código
	.file	"vuln.c"
.text
.globl main
.type main, @function
main:
leal 4(%esp), %ecx
andl $-16, %esp
pushl -4(%ecx)
pushl %ebp
movl %esp, %ebp
pushl %ecx
subl $36, %esp
movl %ecx, -28(%ebp)
movl -28(%ebp), %eax
cmpl $2, (%eax)
je .L2
movl $1, -24(%ebp)
jmp .L3
.L2:
movl -28(%ebp), %edx
movl 4(%edx), %eax
addl $4, %eax
movl (%eax), %eax
movl %eax, 4(%esp)
leal -8(%ebp), %eax
movl %eax, (%esp)
call strcpy
movl $0, -24(%ebp)
.L3:
movl -24(%ebp), %eax
addl $36, %esp
popl %ecx
popl %ebp
leal -4(%ecx), %esp
ret
.size main, .-main
.section .rodata
.LC0:
.string "Hola"
.text
.globl feo
.type feo, @function
feo:
pushl %ebp
movl %esp, %ebp
subl $8, %esp
movl $.LC0, (%esp)
call printf
movl $1, (%esp)
call exit
.size feo, .-feo
.ident "GCC: (Ubuntu 4.3.3-5ubuntu4) 4.3.3"
.section .note.GNU-stack,"",@progbits
 
 
Se nos podria haber ocurrido hace tiempo no? jeje que locos estamos...
En línea



* Quiero cambiar el mundo, pero estoy seguro de que no me darían el código fuente.
* No estoy tratando de destruir a Microsoft. Ese será tan solo un efecto colateral no intencionado.
* Si compila esta bien, si arranca es perfecto.

¡Wiki elhacker.net!
Un saludo
Ivanchuk


Desconectado Desconectado

Mensajes: 466


LLVM


Ver Perfil WWW
Re: ¡¡¡ No puedo sobreescribir el RET !!!
« Respuesta #17 en: 17 Enero 2011, 20:13 »

Se nos podria haber ocurrido hace tiempo no? jeje que locos estamos...
Anon habia dicho maso lo mismo  ;)

Bue, mirando el estado del paciente, anda olvidandote de la historia "sobreescribir ebp y despues eip etc." mientras estes adentro de main.

Si queres seguir con el esquema tradicional, mete el strcpy en una funcion llamada por main, o sea una cosa asi:
Código:
void soy_vuln(char *arg) {
  char buffer [4];
  strcpy (buffer, arg);
}

int main(int argc, char *argv[])  {
  if (argc != 2) return 1;

  soy_vuln(argv[1]);
}

Proba y contanos
« Última modificación: 17 Enero 2011, 20:17 por Ivanchuk » En línea

Sólo quien practica lo absurdo puede lograr lo imposible.

Join us @ http://foro.h-sec.org
Garfield07


Desconectado Desconectado

Mensajes: 1.123


¡Este año voy a por todas! JMJ 2011


Ver Perfil WWW
Re: ¡¡¡ No puedo sobreescribir el RET !!!
« Respuesta #18 en: 19 Enero 2011, 18:39 »

De acuerdo Ivanchuck, pero... por que?
---------------------------------------------------------------

Cierro todo. Seré tonto! Evidentemente strcpy no puede sobreescribir la direccion de vuelta, porque la funcion se mete antes de la vuelta! Entonces el ret va antes que los Ases, asi que no se puede sobreescribir...
Eso ultimo me extrañaba. Hace poco publique aqui un mensaje en el que se notaba que no se podia cambiar el ret porque los ases estaban en otro sitio... De todos modos lo tuve que dejar y pase de el... Y el mensaje "se borro"  :silbar:
Ahora modifico con la respuestaa...

Gracias Ivanchuck! Ahora tendre que buscar como hacer para que me funcione con mi code, porque se podra... Todo se pude...


------------------------------------------------------
Vale, se acabo. Lo consegui  ;D pero sin exploit. Tuve que usar perl...
./vuln $(perl -e 'print "AAAAAAAA\x\x\x\x')
Y la direccion en las X's

Entonces ahora queda...
1) Pasar a exploit. Me da fallo de segmentacion  :huh: a ver que pasa porque funciona con perl.
2) Hacerlo con mi code...
3) Hacerlo con shellcode


Po-de-mos!!!
« Última modificación: 19 Enero 2011, 21:01 por Sagrini » En línea



* Quiero cambiar el mundo, pero estoy seguro de que no me darían el código fuente.
* No estoy tratando de destruir a Microsoft. Ese será tan solo un efecto colateral no intencionado.
* Si compila esta bien, si arranca es perfecto.

¡Wiki elhacker.net!
Un saludo
Páginas: 1 [2] Ir Arriba Respuesta Imprimir 

Ir a:  

Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines