Foro de elhacker.net

Seguridad Informática => Bugs y Exploits => Mensaje iniciado por: black_flowers en 3 Abril 2011, 00:29 am



Título: una duda acerca del buffer overflow.
Publicado por: black_flowers en 3 Abril 2011, 00:29 am
estoy intentando hacer un exploit guiandome por el tutorial de rojodos. Y antes de nada me asalta la duda de que si al producirse el stack overflow ... ¿no se cortará la ejecución del programa debido a la excepción generada? Es decir ¿me permitirá windows seguir ejecutando la shellcode que hay en el buffer una vez se produzca la excepción por buffer overflow?


Título: Re: una duda acerca del buffer overflow.
Publicado por: AlbertoBSD en 3 Abril 2011, 05:48 am
si desactivas todas laprotecciones, el shellcode se ejecutara y la aplicacion original terminara de forma inesperada.

Saludos


Título: Re: una duda acerca del buffer overflow.
Publicado por: black_flowers en 3 Abril 2011, 13:45 pm
si desactivas todas laprotecciones, el shellcode se ejecutara y la aplicacion original terminara de forma inesperada.

Saludos
desactivar protecciones?? ¿te refieres al antivirus? ¿cómo se desactivan tales protecciones en windows7?. ¿no es una excepción del sistema operativo?


Título: Re: una duda acerca del buffer overflow.
Publicado por: AlbertoBSD en 3 Abril 2011, 15:17 pm
favor de leer:

http://wikipedia.org/wiki/Buffer_overflow_protection

Saludos


Título: Re: una duda acerca del buffer overflow.
Publicado por: Garfield07 en 3 Abril 2011, 15:20 pm
Las protecciones son pequeños cambios en la estructura de los programas que los protege de posibles fallos. Ejemplos son el valor canario, aletorización de memoria... En W7 el mayor problema que puedes tener es la aleatorización de memoria ;)


Título: Re: una duda acerca del buffer overflow.
Publicado por: black_flowers en 4 Abril 2011, 23:33 pm
favor de leer:

http://wikipedia.org/wiki/Buffer_overflow_protection

Saludos
lo he leído y desactivado la opción /GS (buffer security check) en el compilador visual c++. Pero al hacer el overflow sigue saliendome un cuadro con un mensaje de error:

Debug Error!
Program:programa
module:programa
file:

Runtime check failure #2. Stack around the variable 'buffer' was corrupted


luego le doy a enter sale el mensaje de que el programa ha dejado de funcionar.
entonces sigue siendo un error referente al buffer overflow y no a una violación de segmento como debería ser en realidad.
Pero no entiendo cómo, ya que esta vez está desactivada la opción de protección sobre buffer overflow al compilarlo.


Título: Re: una duda acerca del buffer overflow.
Publicado por: AlbertoBSD en 5 Abril 2011, 03:49 am
podrias ponernos una captura de pantalla del error.

Saludos


Título: Re: una duda acerca del buffer overflow.
Publicado por: black_flowers en 5 Abril 2011, 04:07 am
claro, a ver si aquí se ve bien...

http://img706.imageshack.us/i/clipboard02shi.jpg/


Título: Re: una duda acerca del buffer overflow.
Publicado por: AlbertoBSD en 5 Abril 2011, 07:43 am
 Que onda, muy posible que tu sistema tenga otras protecciones adicionales.


Te comento que la falla esta ahi, solo es necesario depurar el programa para saber que es lo que esta pasando internamente, prueba con IDA


Saludos


Título: Re: una duda acerca del buffer overflow.
Publicado por: black_flowers en 5 Abril 2011, 16:12 pm
de hecho es un error que sólo mandan los programas hechos en visual c++. El mismo programa hecho en devc n omanda eser error. Debe de ser un error del .net runtime. Aunque por el nombre parece que es del debugger. Pero no lo estoy ejecutando en modo debug.


Título: Re: una duda acerca del buffer overflow.
Publicado por: black_flowers en 7 Abril 2011, 17:29 pm
bueno, ya todo debería estar bien pero sigue sin ejecutarse la shellcode. Se me ocurre que puede haber varias razones, por ejemplo:

¿no deberian darse permisos de ejecución (en el programa vulnerable en el que se va a hacer el overflow), a la región donde se encuentra el buffer que va a ser explotado?

y otra que tambien podría ser es desactivar la protecciòn de g++ contra el buffer overflow. he visto en la web que utilizaba la opción.
Código:
g++ -fstack-protector
pero me da un error de que no reconoce esa opción.