Ir al contenido principal

Entradas

Mostrando las entradas etiquetadas como Buffer overflow

Binary Exploitation (XXIII): Buffer overflow (II) - Shellcode injection

En esta segunda entrada de la miniserie  en la que comparto lo que voy aprendiendo sobre ciertas vulnerabilidades software y técnicas para explotarlas  me centraré , con relación a la vulnerabilidad de desbordamiento de  'buffer'   (en ingles,  'buffer overflow' ), en la técnica de inyección de 'shellcode' (en inglés, 'shellcode injection' ). Los  conceptos básicos sobre: la vulnerabilidad 'buffer overflow' , la pila (en inglés, 'stack' ) y los registros los traté en el post anterior de esta miniserie. ¿En qué consiste la técnica 'shellcode injection ' ? : Con relación a la vulnerabilidad  'buffer overflow' , la técnica de 'shellcode injection'   consiste en provocar el desbordamiento del 'buffer' para sobrescribir la dirección de retorno de una función con la dirección de inicio de un código malicioso ( 'shellcode' ) que el atacante inyecta en memoria   con objeto de que el programa ejecute lo...

Binary Exploitation (XXII): Buffer overflow (I)

Comienzo con éste una serie de posts en los que compartiré lo que voy aprendiendo sobre ciertas vulnerabilidades software y técnicas para explotarlas . En esta primera entrada de la miniserie me centraré en la vulnerabilidad de desbordamiento de 'buffer'   (en ingles, 'buffer overflow' ). En primer lugar,  un poco de teoría para recodar los conceptos fundamentales . ¿Qué es la  vulnerabilidad  'buffer overflow' ? : La vulnerabilidad 'buffer overflow' se produce cuando el tamaño de los datos que un usuario incluye por medio de un programa excede la cantidad de memoria asignada a la entrada , escribiéndose parte de los datos introducidos en posiciones de memoria adyacentes. Para evitar esta vulnerabilidad, los programas deben establecer un tamaño máximo para los datos de entrada y garantizar que no se supere éste. Cierta información de un programa en ejecución se almacena temporalmente de forma contigua en la memoria, en una zona llamada pila. La entrada...

Binary Exploitation (IV): Solución Reto picoCTF 2019 "NewOverFlow-1"

Hasta ahora en los retos de la categoría 'Binary Exploitation'  que he puesto en este blog se han visto involucrados ejecutables de 32 bits, ¿se explotaría igual la vulnerabilidad  de desbordamiento de 'buffer'  (en inglés, 'buffer overflow' ) con ejecutables de 64 bits? . Voy por partes. En este primer post explico cómo  tomar el control del flujo de un ejecutable de 64 bits vulnerable  y conseguir que el programa ejecute una determinada parte de él que nosotros queramos. Para ello  utilizo uno de  los retos de la plataforma picoCTF 2019 . El desafío en cuestión, que lleva el título  "NewOverFlow-1" , presenta en mi opinión un  nivel de dificultad alto ( ★ ★ ★ ★ ☆ ) . Para saber por qué le asigno ese nivel de dificultad hay que esperar al final de esta entrada :). -  NewOverFlow-1  - Points: 200 : Su  enunciado  dice lo siguiente:  ' Lets try moving to 64-bit, but don't worry we'll start easy. Overflow the...

Binary Exploitation (III): Solución Reto picoCTF 2018 "buffer overflow 2"

En los dos posts anteriores  puse sendas soluciones a dos retos tipo CTF de la categoría  'Binary Exploitation'  ( "Boofy" y "buffer overflow 1" ) en las que  expliqué brevemente cómo explotar la vulnerabilidad de desbordamiento de  'buffer'  (en inglés,  'buffer overflow' )  para sobrescribir el valor de una variable  y  para tomar el control del flujo de un programa vulnerable , respectivamente. Pues bien, en esta entrada doy un paso más que se puede considerar como la suma de los dos casos anteriores. Para ello, como en el post anterior ,  utilizo uno de  los retos de la plataforma picoCTF 2018 . En este desafío debo obtener el  control sobre el flujo del programa , para que éste salte o bifurque a una función determinada, y sobre el contenido de dos variables , que debo pasar como parámetros a dicha función. El desafío en cuestión, que lleva el título  "buffer overflow 2" , presenta un  nivel de d...

Binary Exploitation (II): Solución Reto picoCTF 2018 "buffer overflow 1"

En el post anterior puse la solución a un reto de la categoría 'Binary Exploitation' en la que expliqué brevemente cómo explotar la vulnerabilidad de desbordamiento de 'buffer' (en inglés, 'buffer overflow' ) para sobrescribir el valor de una variable con el objetivo de que al ejecutarse el programa vulnerable éste muestre la 'flag' . Pues bien,  en este post doy un paso más para ilustrar cómo se puede explotar dicha vulnerabilidad para tomar el control del flujo de un programa vulnerable  y conseguir que éste ejecute lo que lo que nosotros queramos. Para ello utilizo uno de los retos de la plataforma picoCTF 2018 . El desafío en cuestión, que lleva el título  "buffer overflow 1" , presenta un  nivel de dificultad medio ( ★ ★ ★ ☆☆ ) . -  buffer overflow 1 - Points: 200 : Su  enunciado  dice lo siguiente:  ' Okay now you're cooking! This time can you overflow the buffer and return to the flag function in this program? You ca...

Binary Exploitation (I): Solución Reto TG:HACK 2020 "Boofy"

En esta ocasión pongo la solución a un reto de la categoría 'Binary Exploitation'  de TG:HACK 2020 , competición en modalidad 'on-line' , estilo 'Capture the Flag' y formato 'Jeopardy' . Este desafió, que  lleva por título  " Boofy" , en mi opinión, presenta un  nivel  de dificultad bajo  ( ★ ★ ☆☆☆ ) . Su  enunciado  dice lo siguiente: This program looks like it's password protected, but we can't seem to find the correct password. nc boofy.tghack.no 6003 Y se proporcionan dos archivos: un ejecutable (boofy) y otro con un código fuente (boofy.c). Solución : lo primero que hago es ejecutar el programa (boofy) ; se me pide una contraseña, introduzco 'A' y se muestra un mensaje que me indica que esa no es la contraseña correcta.  Después, echo un vistazo al código fuente  (boofy.c) : #include < stdlib.h> #include < stdio.h> #include < unistd.h> void get_flag() { printf("TG20{the ...