Foro de elhacker.net

Sistemas Operativos => GNU/Linux => Mensaje iniciado por: Garfield07 en 31 Diciembre 2010, 17:08 pm



Título: Mensaje ¿nucleo? fallo de segmentacion ::: Desactivando la protección
Publicado por: Garfield07 en 31 Diciembre 2010, 17:08 pm
Modifico : Ubuntu 9.04 64 bits modo de compatibilidad !

Buenas, escribo esto por un problema que me ha surgido al intentar explotar una sencilla aplicación evidentemente vulnerable... El caso es que al saber cuantos nops le tengo que meter a la pila para que vaya, me ha dado un bonito error.
Mi code (para no entenderlo xD):
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. int main (int argc, char *argv [])
  6. {
  7. char buffer [8];
  8. strcpy (buffer, argv [1]);
  9.  
  10. printf ("You said : %s", buffer);
  11. return 0;
  12. }
El fallo:
Citar
*** stack smashing detected ***: ./code terminated
======= Backtrace: =========
/lib/tls/i686/cmov/libc.so.6(__fortify_fail+0x48)[0xb77d4ef8]
/lib/tls/i686/cmov/libc.so.6(__fortify_fail+0x0)[0xb77d4eb0]
./code[0x80484b6]
[0x41414141]
======= Memory map: ========
08048000-08049000 r-xp 00000000 08:06 5267571    /home/juanra/Escritorio/code
08049000-0804a000 r--p 00000000 08:06 5267571    /home/juanra/Escritorio/code
0804a000-0804b000 rw-p 00001000 08:06 5267571    /home/juanra/Escritorio/code
09d9d000-09dbe000 rw-p 09d9d000 00:00 0          [heap]
b76d6000-b76d7000 rw-p b76d6000 00:00 0
b76d7000-b7833000 r-xp 00000000 08:06 353269     /lib/tls/i686/cmov/libc-2.9.so
b7833000-b7834000 ---p 0015c000 08:06 353269     /lib/tls/i686/cmov/libc-2.9.so
b7834000-b7836000 r--p 0015c000 08:06 353269     /lib/tls/i686/cmov/libc-2.9.so
b7836000-b7837000 rw-p 0015e000 08:06 353269     /lib/tls/i686/cmov/libc-2.9.so
b7837000-b783a000 rw-p b7837000 00:00 0
b783b000-b7848000 r-xp 00000000 08:06 335937     /lib/libgcc_s.so.1
b7848000-b7849000 r--p 0000c000 08:06 335937     /lib/libgcc_s.so.1
b7849000-b784a000 rw-p 0000d000 08:06 335937     /lib/libgcc_s.so.1
b784a000-b784d000 rw-p b784a000 00:00 0
b784d000-b784e000 r-xp b784d000 00:00 0          [vdso]
b784e000-b786a000 r-xp 00000000 08:06 335886     /lib/ld-2.9.so
b786a000-b786b000 r--p 0001b000 08:06 335886     /lib/ld-2.9.so
b786b000-b786c000 rw-p 0001c000 08:06 335886     /lib/ld-2.9.so
bfcbe000-bfcd3000 rw-p bffea000 00:00 0          [stack]
You said : AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACancelado

Se que es una proteccion de la pila xD... pero no se como desactivarla para seguir...
Alguien me puede ayudar a desactivar la proteccion de la pila?
Muchas gracias xD!


Título: Re: Mensaje ¿nucleo? fallo de segmentacion ::: Desactivando la protección
Publicado por: Foxy Rider en 31 Diciembre 2010, 23:23 pm
Acá el culpable sería gcc .. esto es un mecanismo de protección que tiene para detectar buffer overflows (stack smashing) ...
cuando compiles asegurate de agregar este parámetro para desactivarlo :
Código
  1. -fno-stack-protector

Como extra también te comento si este mecanismo se disparase y quisieses "arreglarlo" , con valgrind cazás el problema al toque ...
Otro dato es que si tenés instalada la capa de compatibilidad en este caso no importa (fijate el memory map, /lib en sistemas de 64 está enlazado simbólicamente a /lib64 que serían las librerías de 64 bits) (Retiro lo dicho, recién noto un i686 por ahí bajo /lib en un sistema de 64? ... ayy Ubuntu ... la forma rápida de verificarlo es ver si ese elf es elfclass32 o elfclass64 )
Otro dato es que esto está prácticamente implementado en modo de usuario (en una librería llamada libssp)

Edit : Te acerco dos links al respecto por si te interesa saber más :
http://en.wikipedia.org/wiki/Buffer_overflow_protection#GCC_Stack-Smashing_Protector_.28ProPolice.29
http://www.trl.ibm.com/projects/security/ssp/

Saludos.

P.S : esto no sé si iría a "Hacking Linux/Unix" o "Programación C/C++" =(



Título: Re: Mensaje ¿nucleo? fallo de segmentacion ::: Desactivando la protección
Publicado por: Garfield07 en 1 Enero 2011, 01:03 am
Yo tmb dude, y sobre todo ahora con la respuesta xD esk creia que era problemita del kernel (tipo protecciones, etc.)
muchisimas gracias !!!

PD1: Claro que investigare xD... Todo por aprender !
PD2: Feliz año nuevo de hace 1:03 horas!