
Explotación de binarios e ingeniería inversa (de ensamblador a C)
Explora desensamblado, explotación binaria e ingeniería inversa a través de 10 pequeños desafíos.
En la carpeta de cada nivel encontrarás:
flag - contraseña para el siguiente nivel
README.md - cómo encontrar la contraseña
source.c - el binario con ingeniería inversa
dissasembly_notes.md - notas sobre asm
Consulta el tema para más detalles.
Para más diversión con gdb y explotación, echa un vistazo al proyecto anterior RainFall.
Primero descarga desde 42 OverRide.iso.
En Mac OSX, instala VirtualBox.
En VirtualBox crea una nueva MV (haz clic en Nuevo).
Continúa a través de todos los pasos siguientes con la configuración predeterminada:
A continuación, haz clic en Configuración > Red > Adaptador 1 > Conectado a: Adaptador puente.
Todavía en configuración, haz clic en Almacenamiento > A la derecha de "Controlador: IDE", hay un icono de CD con un signo + (agregar unidad óptica).
Haz clic en Agregar imagen de disco y selecciona OverRide.iso.
Haz clic en Iniciar para arrancar la MV; una vez en ejecución, debería mostrar la dirección IP de la MV y solicitar al usuario que inicie sesión.
Inicia sesión desde un shell separado como usuario level00 con la contraseña level00.
ssh level00@{VM_IP} -p 4242
Como usuario level00, el objetivo es leer la contraseña para el usuario level01, que se encuentra en /home/users/level01/.pass. Sin embargo, el usuario level00 no tiene permisos para leer este archivo.
En la carpeta de inicio del usuario level00 hay un binario level00 con SUID establecido y propietario level01.
Esto significa que cuando ejecutamos el binario level00, lo hacemos con los permisos del usuario level01.
Debemos encontrar una vulnerabilidad en el binario level00 con gdb. Luego explotar la vulnerabilidad para ejecutar system("/bin/sh"), abriendo una shell como usuario level01 donde tengamos permisos para leer la contraseña.
cat /home/users/level01/.pass
Luego inicia sesión como usuario level01.
su level01
Repite para cada nivel.
Para cada nivel, aplicamos ingeniería inversa al source.c original examinando el desensamblado de gdb del binario.
0 - Contraseña hardcodeada
1 - Ataque Ret2Libc
2 - Ataque de cadena de formato printf()
3 - Contraseña por fuerza bruta
4 - Desbordamiento de pila gets() + Ataque Return-to-libc
5 - Shellcode en variable de entorno + Ataque de cadena de formato printf()
6 - Valor hash descubrible con gdb
7 - Ataque Ret2Libc en tabla de datos desprotegida
8 - El binario respalda la contraseña mediante enlace simbólico
9 - Error de off-by-one
Escribí este proyecto en equipo con el super talentoso @dfinnis.