🔒 Registro cerrado · Apertura oficial próximamente · Acceso exclusivo para alumnos activos
Iniciar SesiónRegistros, la pila y por qué existe un desbordamiento de búfer
5 tareas · 35 min · Principiante
El informe del especialista sobre M-2411 trae tres palabras que hasta ahora se dejaron sin abrir porque no hacían falta para leer el listado ni el pseudocódigo: «registro», «pila» y, en el párrafo final, «desbordamiento de búfer» junto a la palabra «shellcode». Esta ruta no forma a quien escribe exploits: forma a quien lee un informe de otro y entiende qué está diciendo. Aquí no se abre ningún depurador ni se escribe ningún ataque: se explica, al nivel mínimo para reconocerlo por escrito, qué es un registro del procesador, qué es la pila, qué significa que un programa se desborde y qué es el shellcode que un informe puede mencionar como lo que encontró dentro.
Objetivo de la sala
El informe del especialista sobre M-2411 trae tres palabras que hasta ahora se dejaron sin abrir porque no hacían falta para leer el listado ni el pseudocódigo: «registro», «pila» y, en el párrafo final, «desbordamiento de búfer» junto a la palabra «shellcode». Esta ruta no forma a quien escribe exploits: forma a quien lee un informe de otro y entiende qué está diciendo. Aquí no se abre ningún depurador ni se escribe ningún ataque: se explica, al nivel mínimo para reconocerlo por escrito, qué es un registro del procesador, qué es la pila, qué significa que un programa se desborde y qué es el shellcode que un informe puede mencionar como lo que encontró dentro.Dentro del procesador hay un puñado de casillas de memoria muy rápidas y muy pequeñas, con nombre fijo: en una muestra de 32 bits se llaman EAX, EBX, ECX... y en una de 64 bits, RAX, RBX, RCX... Cada una guarda un solo valor a la vez —un número, una dirección, un resultado— mientras el procesador trabaja. Cuando el listado de M-2411 dice que una función «mueve un valor a EAX y lo compara con cero», está describiendo exactamente eso: una casilla que recibe un dato para que la siguiente instrucción lo use.
No hace falta memorizar qué guarda cada registro. Para leer un informe basta con saber que son el escritorio de trabajo del procesador: chico, siempre a mano, y vacío de significado hasta que una instrucción lo llena.
Para responder aquí hace falta una cuenta
Puedes leer toda la sala sin cuenta. Responder y guardar tu avance pide entrar; al volver aterrizas en esta misma sala.
Responde para continuar
¿Qué es un registro del procesador, al nivel que hace falta para leer un informe?
Ver pista de ayuda
Piensa en el "escritorio de trabajo" del procesador, no en el disco ni en la red.
La pila (stack) es una franja de memoria que un programa usa como una torre de bandejas: lo último que se pone es lo primero que se quita. Cuando una función llama a otra, apila ahí la dirección a la que debe volver al terminar, y suele apilar también sus datos de trabajo mientras dura esa llamada. El puntero de pila (ESP en 32 bits, RSP en 64 bits) es el registro que siempre apunta a la bandeja de arriba: la próxima que se va a usar o a quitar.
Esto explica una frase que aparece en informes de este tipo: «la función vuelve a la dirección equivocada». Si la dirección de retorno que estaba apilada cambia antes de que la función termine, el programa no vuelve a donde debía, vuelve a donde quedó escrito.
Para responder aquí hace falta una cuenta
Puedes leer toda la sala sin cuenta. Responder y guardar tu avance pide entrar; al volver aterrizas en esta misma sala.
Responde para continuar
¿Para qué usa un programa la pila cuando una función llama a otra?
Ver pista de ayuda
Piensa en qué necesita saber el programa para seguir ejecutándose cuando la función acaba.
Un búfer es un espacio reservado de tamaño fijo para guardar un dato: por ejemplo, 50 casillas para un nombre. Un desbordamiento de búfer ocurre cuando un programa escribe en ese espacio más datos de los que reservó, y lo que sobra no desaparece: cae en la memoria de al lado, que puede ser otra variable o, si el búfer vive en la pila, la propia dirección de retorno que vimos en la tarea anterior.
Esto es el concepto, no la técnica para explotarlo: en esta ruta no se construye un programa vulnerable ni se escribe un dato pensado para pisar esa dirección. Lo que hace falta es reconocer la frase cuando aparece en un informe de un tercero y entender qué está describiendo: un programa que no comprobó el tamaño de lo que escribía, y una zona de memoria vecina que terminó con un valor que nadie puso ahí a propósito.
Para responder aquí hace falta una cuenta
Puedes leer toda la sala sin cuenta. Responder y guardar tu avance pide entrar; al volver aterrizas en esta misma sala.
Responde para continuar
¿Qué describe, en concepto, la frase «desbordamiento de búfer» en un informe de un especialista?
Ver pista de ayuda
Piensa en un espacio de 50 casillas y en un dato de 80.
Cuando el búfer que se desborda vive en la pila, justo al lado puede estar la dirección de retorno que la tarea 2 explicó. Si el desbordamiento alcanza a pisarla con otro valor, el programa, al terminar esa función, no vuelve a donde debía: salta a la dirección que quedó escrita encima. Eso es lo que un informe quiere decir cuando habla de «control del flujo de ejecución»: no que alguien «hackeó mágicamente» el programa, sino que una escritura sin control cambió un dato muy concreto del que depende hacia dónde salta el procesador.
Esto es el límite de lo que esta ruta enseña: entender por qué una dirección de retorno pisada es grave. Construir ese dato a propósito, calcular direcciones o encadenar instrucciones para que el salto termine en un sitio útil para un atacante es trabajo de explotación, y queda fuera de una ruta defensiva.
Para responder aquí hace falta una cuenta
Puedes leer toda la sala sin cuenta. Responder y guardar tu avance pide entrar; al volver aterrizas en esta misma sala.
Responde para continuar
¿Por qué un desbordamiento de búfer en la pila puede ser más grave que uno en otra zona de memoria?
Ver pista de ayuda
Vuelve a la tarea 2 y piensa en qué guarda la pila además de los datos de la función.
Shellcode es el nombre que recibe un bloque pequeño de instrucciones de máquina, listo para ejecutarse directamente, que un atacante intenta meter en la memoria de un programa vulnerable —por ejemplo, aprovechando un desbordamiento como el de la tarea 3— para que el procesador termine saltando a él. El nombre viene de su objetivo clásico: abrir una consola de comandos (shell) en el equipo de la víctima, aunque hoy un shellcode puede hacer cualquier otra cosa.
Para este oficio, el shellcode no se escribe ni se analiza instrucción a instrucción: se reconoce como una pieza más del informe, con el mismo criterio de las salas anteriores de este módulo. Un informe que dice «se identificó shellcode en el volcado de memoria» está afirmando una observación concreta —un bloque de instrucciones ejecutables apareció donde no debería haber más que datos—, no un veredicto sobre toda la muestra. Y, como con las capacidades de la tarea anterior, conviene preguntar: ¿eso se observó ejecutándose, o solo está presente en el archivo?
Para responder aquí hace falta una cuenta
Puedes leer toda la sala sin cuenta. Responder y guardar tu avance pide entrar; al volver aterrizas en esta misma sala.
Responde para continuar
¿Qué es el shellcode que un informe de análisis puede mencionar haber encontrado?
Ver pista de ayuda
Fíjate en la raíz de la palabra y en qué logra, clásicamente, cuando se ejecuta.
Whoami-Labs Pro
Whoami-Labs Pro utiliza cookies
Utilizamos cookies y almacenamiento local para el funcionamiento del sitio y la seguridad de tu sesión y, solo si lo autorizas, analítica. Puedes aceptar, rechazar o personalizar. Política de Cookies · Política de Privacidad
Preferencias
Configuraciones de cookies
Elige qué categorías permitir. Las esenciales siempre están activas. Consulta la Política de Privacidad.
Esenciales
Siempre activas · sesión, CSRF, tema y esta preferencia
Necesarias para iniciar sesión, proteger formularios (CSRF) y recordar tu elección de cookies y tema. Sin ellas la plataforma no funciona de forma segura.
Analíticos
Medimos con Google Analytics cómo se usa la plataforma; solo si lo aceptas
Google Analytics (cookies _ga) nos dice qué páginas se usan y dónde se atascan las personas. No enviamos tu nombre ni tu correo. Sin tu permiso no se carga, y puedes cambiarlo cuando quieras desde «Cookies» al final de la página.
Marketing
Hoy no usamos cookies de marketing; si algún día lo hacemos, será solo con tu permiso
Comunicaciones o campañas. No activos hoy en la plataforma; quedarán listos si los conectamos y solo si los permites.