Puede explotar la vulnerabilidad si el programa comenzó con gdb, pero segfaults si se inició sin gdb

2

Actualmente estoy intentando explotar un programa simple llamado basic_vuln.c

#include <stdio.h>;
int main(int argc, char** argv) {
  char buf[64];  
  strcpy(buf, argv[1]);  
}

Estoy usando xubuntu 12.10 con 3.5.0-17 Kernel de Linux, ASLR está apagado y compilado con la versión actual del compilador de tiny c.

Ahora al problema real, estoy inyectando un código de shell básico que genera / bin / sh. El problema es que cuando lo ejecuto dentro de gdb, todo funciona bien y obtengo un shell. Pero si comienzo el programa dentro de bash obtengo un error de seguridad.

Traté de obtener un volcado del núcleo para ver dónde se encuentra el problema, pero supongo que debido a la memoria dañada no obtengo ninguna (si no le doy al programa ningún argumento, segfaults y obtengo un núcleo volcado).

¿Alguna idea? Si necesita más detalles sobre el sistema, como la versión gdb o similar, lo publicaré lo más rápido que pueda después de la solicitud.

    
pregunta Rob 27.03.2013 - 18:35
fuente

1 respuesta

2

Esto casi siempre sucederá. Cuando carga un programa en gdb , las cosas cambian un poco, no mucho, pero lo suficiente como para hacer que una dirección se sobrescriba mal.

Tiene un par de opciones, puede usar herramientas (como pattern_create.rb de metasploit) para determinar la dirección real de su búfer en la memoria cuando el programa se ejecuta fuera del depurador. Esto se logra simplemente al pasar un patrón que no se repite a su programa, y al ver en qué dirección se produce la falla de segregación (volcado de memoria), de esa manera puede determinar en qué parte del búfer se encuentra la sección que está escrita en la dirección de retorno. / strike> ignora mis divagaciones, esto no tiene ninguna relación, ve con el trineo nop

O simplemente puede ampliar un poco su NOP sled y comenzar a adivinar las direcciones. Por lo general, no toma más de una docena de intentos en un programa pequeño.

    
respondido por el lynks 27.03.2013 - 20:05
fuente

Lea otras preguntas en las etiquetas