Icono del sitio Blog personal de Guido Cutipa

Introducción a los retos de captura la bandera CTF, como método de entrenamiento ofensivo – Parte 4

Amigos, llegamos al último nivel de los retos CTF iniciados en un anterior post.

A continuación pueden encontrar los enlaces a todos Posts relacionados:

Nivel 5

Reto: Reversing 2

“Estamos haciendo un desarrollo seguro, Tu reto es cambiar el flujo del programa para que se ejecute la funcion oculta “vencer”. Una vez que lo logres te felicitare por tu éxito. La bandera es la dirección hexadecimal de la función “vencer” con el formato correcto (0x11223344)”

Solución

Podemos verificar que tipo de archivo “filesignature” con el comando hexedit

También podemos ejecutar un debug del archivo para verificar si muestra algún mensaje de bienvenida con el comando:

# gdb programa
r

Lo mismo con el programa strace, si no lo tenemos instalado podemos ejecutar lo siguiente

# apt install strace

Buscamos información del archivo conel comando:

# file programa

Se comprueban las cadenas del archivo con el comando strings

# strings programa

Verificar que esta realizando el binario

# ltrace ./programa

Finalmente la solución es desensamblar el binario, porque en el enunciado nos indica “…La bandera es la dirección hexadecimal de la función ‘vencer’…”

Par esto utilizaremos Radare2, que es una herramienta de ingeniería inversa, el comando es el siguiente:

# r2 programa

Una vez dentro del programa escribimos “aa” para analizar todo

> aa 

Podemos probar desensamblar la función main con el comando pdf (Print Disassemble Function)

pdf @ sym.main

Ahora desensamblamos la función vencer:

pdf @ sym.vencer

La dirección hexadecimal de la función “vencer” será la primera dirección hexadecimal mostrada después de ejecutar:   pdf @ sym.vencer

Bandera: 0x080484bb

Espero que todos estos posts les hayan servido, a continuación les dejo algunos enlaces para que sigan perfeccionando sus habilidades:

Salir de la versión móvil