Solución a otro reto de la categoría 'Binary Exploitation' de la competición Sunshine CTF 2020.
En esta entrada la solución al desafío que lleva por título "speedrun07", y que, en mi opinión, presenta un nivel de dificultad bajo (★★☆☆☆).
- Enunciado:
- Solución: Se proporciona un archivo ejecutable (chall_07) y lo primero que hago es ejecutarlo; incluyo una cadena larga ('AAA…A') y después otra ('AAA…A'), y veo que el binario es vulnerable a un desbordamiento de ‘buffer’ (en inglés, ‘buffer overflow’):
Después, compruebo los mecanismos de seguridad del binario utilizando ‘checksec’:
Se trata de un binario de 64 bits, y como se ve en la figura anterior NX está deshabilitado, por lo que podré inyectar ‘shellcode’ en la pila (en inglés, ‘stack’) para ejecutarlo, y PIE está habilitado, lo que aleatoriza la dirección base del binario para dificultar el uso por un atacante de sus funciones y de ‘gadgets’ del propio binario (en español dispositivos, y que, en este caso, son pequeños fragmentos de código ya presentes en el binario).
Como también se ve, entre las protecciones de este binario se ha detectado la existencia de un canario, que es un valor, generalmente aleatorio, que se coloca entre un ‘buffer’ y los datos de la pila adyacentes al mismo para detectar los desbordamientos del ‘buffer’, de tal forma que al final de una función se comprueba si se ha modificado su valor y, caso de que así sea, sería indicativo de que se ha producido un desbordamiento del ‘buffer’, ya que el valor del canario sería el primer dato en corromperse, y se podrían tomar las acciones oportunas, por ejemplo, advertir de esta circunstancia y dar por finalizado el programa.
Comentarios
Publicar un comentario