int main () {
caracteres login_name [ 20 ] ;
printf ( " entra login : ") ;
scanf ("% s " , login_name ) ;
printf ( " desbordamiento de búfer "); }
! Este código básico crea una matriz de caracteres ( una palabra, esencialmente ) llamado " nombre_de_usuario " que llevará a cabo la entrada del usuario . Tenga en cuenta que " login_name " está a sólo 20 caracteres de longitud . Entonces, el programa solicita la entrada del usuario, y almacena la información en " login_name . "
2
Porque el desbordamiento de búfer. Compile el programa y ejecutarlo. Cuando se le indique, introduzca un nombre de inicio de sesión que supera los 20 caracteres. Por ejemplo :
Entra login : . " . Escriba" ESTO ES UNA SENTENCIA DE LARGO QUE invadir el espacio disponible en el VARIABLE INGRESAR
Hit El mensaje de salida se imprimirá y el programa terminará. La variable ha invadido el espacio de búfer disponible en la variable " nombre_de_usuario " . La pregunta entonces es , ¿qué pasó ?
3
Entender cómo funciona la memoria de la computadora . Como la entrada del usuario se almacena en " login_name , " el exceso de información ( cualquier carácter más allá de 20 caracteres ) fue escrito en la memoria más allá de los límites de la variable . Esos datos deben ser almacenados en algún lugar . En este caso , se almacena en la memoria inmediatamente adyacente a donde se encuentra la variable " login_name " . Por pasarse de los límites de la variable de sesión , los datos adicionales ( intencionalmente o no) vuelve a escribir los datos inmediatamente al lado de la variable. Esto significa que el hacker podría básicamente reescribir el código , y cambiar cómo funciona el código, esencialmente, que posee el sistema.
4
Darse cuenta de las vulnerabilidades de Linux. Linux está codificado en C /C + +, y muchos de su funcionalidad del núcleo requiere la manipulación de cadenas de caracteres. Sin embargo , muchas distribuciones modernas de Linux protegen contra los casos de desbordamiento de búfer en los puntos donde se requiere la intervención del usuario , ya sea a través de la protección de pila o dinámicamente matrices de caracteres de cambio de tamaño . Aún existen vulnerabilidades : el exploit de desbordamiento de búfer USB descubierto en 2011 es un ejemplo. En el caso del USB, una larga ID USB adicional puede desbordar una variable del sistema en Linux.