Ir al contenido principal

Entradas

Mostrando entradas de 2020

Binary Exploitation (XXVII): Format string (I)

En esta entrada de la miniserie en la que explico brevemente ciertas vulnerabilidades software y técnicas para explotarlas  me centraré en la vulnerabilidad de cadena de formato   (en ingles,  'format string' ). En primer lugar, como siempre que inicio los posts correspondientes a una vulnerabilidad,  un poco de teoría para recordar conceptos fundamentales  y ponerla en contexto . ¿Qué es la  vulnerabilidad  'format string' ? : Tal y como nos cuenta wikipedia , la vulnerabilidad  'format string'   se produce  cuando los datos enviados a través de una cadena de entrada de caracteres son evaluados como un comando por la aplicación a la que van dirigidos , pudiéndose filtrar o escribir datos en la memoria. Para evitar esta vulnerabilidad, los programas deben utilizar correctamente las funciones para dar formato a las cadenas de caracteres. Si un atacante logra controlar la cadena de formato puede explotar esta vulnerabilidad para filtrar el contenido de la memoria

Binary Exploitation (XXVI): Solución Reto picoCTF 2018 "echooo"

En este post la  solución a otro d e los retos de la categoría  'Binary Exploitation'  de  la plataforma picoCTF 2018 . El desafío en cuestión, que lleva el título "echooo" , presenta en mi opinión un nivel de dificultad bajo (★★ ☆ ☆☆) . - echooo - Points: 300: Su enunciado dice lo siguiente: ' This program prints any input you give it. Can you leak the flag? Connect with nc 2018shell.picoctf.com 23397. Source '. Se proporcionan dos archivos: un ejecutable ( echo ) y un fichero con el código fuente ( echo.c ). Y como pista ( 'Hint' ) se nos dice: ' If only the program used puts... '. Solución:  utilizo el comando file para ver qué tipo de ejecutable es echo y veo, entre otras cosas, que se trata de un binario con formato ELF (Executable and Linkable format) y que la arquitectura es de 32-bit. Por el enunciado del reto intuyo que para obtener la flag debo explotar la vulnerabilidad de cadena de formato  (en inglés,  'format string' )

Binary Exploitation (XXV): Solución Reto picoCTF 2019 "slippery-shellcode"

Al hilo de los dos posts anteriores, en esta entrada profundizo un poco más en la técnica de inyección de  'shellcode'  (en inglés,  'shellcode injection' ) utilizando para ello la  solución a uno d e los retos de la categoría  'Binary Exploitation'  de  la plataforma picoCTF 2019 . El desafío en cuestión, que lleva el título  " slippery-shellcode " , presenta en mi opinión un  nivel de dificultad medio ( ★ ★ ★ ☆☆ ) . -  slippery-shellcode  - Points: 200 : Su  enunciado  dice lo  siguiente:  ' This program is a little bit more tricky. Can you spawn a shell and use that to read the flag.txt? You can find the program in /problems/slippery-shellcode_1_69e5bb04445e336005697361e4c2deb0 on the shell server. Source ' . Se proporcionan dos archivos: un ejecutable (vuln) y un fichero con el código fuente (vuln.c). Solución:  Este reto es muy similar al del post anterior ,  con la única diferencia de que no sé exactamente la dirección dentro del 'buf

Binary Exploitation (XXIV): Solución Reto picoCTF 2018 "shellcode"

Al hilo del post anterior , en esta entrada profundizo un poco en la técnica de inyección de 'shellcode' (en inglés, 'shellcode injection' ) utilizando para ello la solución a uno d e los retos de la categoría  'Binary Exploitation'  de  la plataforma picoCTF 2018 . El desafío en cuestión, que lleva el título  "shellcode" , presenta en mi opinión un  nivel de dificultad medio ( ★ ★ ★ ☆☆ ) . -  shellcode  - Points: 200 : Su  enunciado  dice lo  siguiente:  ' This program executes any input you give it. Can you get a shell? You can find the program in /problems/shellcode_2_0caa0f1860741079dd0a66ccf032c5f4 on the shell server. Source ' . Se proporcionan dos archivos: un ejecutable (vuln) y un fichero con el código fuente (vuln.c). Y como pistas ( 'Hints' ) se nos dan las siguientes: -  'Maybe try writing some shellcode?' . -  'You also might be able to find some good shellcode online' . Solución:  Me conecto al servidor, c

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 (XXI): Solución Reto ROP Emporium "write4"

Continúo poniendo las soluciones de un   sitio   que he encontrado  para aprender ROP , ‘ Return Oriented Programming’  (en español, Programación Orientada al Retorno),  a través de una serie de desafíos  diseñados para enseñar diversas técnicas. Como siempre utilizo la versión de 64 bits del desafío. En este post la  solución al reto que lleva por título "write4" , y que, en mi opinión, presenta un  nivel de dificultad alto (★★ ★ ★ ☆) . -  Enunciado : Además, se explica lo siguiente : On completing our usual checks for interesting strings and symbols in this binary we're confronted with the stark truth that our favourite string "/bin/cat flag.txt" is not present this time. Although you'll see later that there are other ways around this problem, such as resolving dynamically loaded libraries and using the strings present in those, we'll stick to the challenge goal which is learning how to get data into the target process's virtual address space via t