Laboratorio de seguridad · 002
SupportDesk
Un servicio en C que guarda punteros que ya no le pertenecen. Fuga, corrupción y shell.
- Difícil
- Linux
- C
- Heap
- Pwn
Descripción del reto
Un servicio de soporte escucha en el puerto 1337 y guarda tus notas en el heap. Libera una y sigue usándola: la memoria no perdona. Necesitas una fuga para saber dónde estás y una escritura para decidir a dónde saltas. Después, el camino a root pasa por lo que el sistema ejecuta solo.
Tu objetivo: shell como support y, desde ahí, root. Cada evidencia está en el home de su usuario.
Objetivos
User flag
20 ptsConsigue un shell como support y lee /home/support/flag.txt.
Root flag
20 ptsEscala desde support y lee /root/root.txt.
Reto completado
Las flags son únicas para tu sesión. Inicia la máquina para poder validarlas.
Antes de empezar
- 1Inicia la máquina
Pulsa «Iniciar máquina». Tarda alrededor de un minuto en estar lista.
- 2Conéctate al servicio
Cuando arranque, tendrás una IP pública. El servicio escucha en el puerto
1337:nc <ip> 1337. - 3Entrega las dos evidencias
Primero el shell de
support; después escala y lee la de root.
Contexto técnico
Reto propio, sin CVE: un servicio en C compilado con -O0 y PIE sobre Debian 13 (glibc 2.41). Se ataca por la red, como un servicio real: antes de entrar no tienes el binario.
Para cuando tengas la fuga: el puntero del unsorted bin apunta a main_arena+96, que en esta libc es libc+0x1e5b20; system está en libc+0x53090.