Desafortunadamente, no entiendo un concepto menor en el libro "Art of Exploitation", relacionado con el desbordamiento del montón: se está agregando una nueva shell de root al archivo passwd. De página 168 :
Sin embargo, la naturaleza de este exploit de desbordamiento de montón en particular no permitirá que se escriba esa línea exacta en
/etc/passwd, porque la cadena debe terminar con/etc/passwd. Sin embargo, si ese nombre de archivo se agrega simplemente al final de la entrada, la entrada del archivo de contraseña será incorrecta. Esto se puede compensar con el uso inteligente de un enlace de archivo simbólico, por lo que la entrada puede terminar con/etc/passwdy seguir siendo una línea válida en el archivo de contraseña. Así es como funciona:reader@hacking:~/booksrc $ mkdir /tmp/etc reader@hacking:~/booksrc $ ln -s /bin/bash /tmp/etc/passwd reader@hacking:~/booksrc $ ls -l /tmp/etc/passwd lrwxrwxrwx 19 2007-09-09 16:25 /tmp/etc/passwd -> /bin/bashAhora
/tmp/etc/passwdapunta al shell de inicio de sesión / bin / bash. Esto significa que un shell de inicio de sesión válido para el archivo de contraseña también es/tmp/etc/passwd, lo que hace que la siguiente línea de archivo de contraseña sea válida:myroot:XXq2wKiyI43A2:0:0:me:/root:/tmp/etc/passwdLos valores de esta línea solo deben modificarse ligeramente para que la parte antes de
/etc/passwdtenga exactamente 104 bytes de longitud:
-
Entiendo la parte cuando el autor afirma que
/tmp/etc/passwdse puede usar para vincular a/bin/bash, pero no entiendo cómo funciona esto (no hay una explicación demkdir,ln -setc) -
También, esto es probablemente muy simple, pero ¿por qué el autor declara que: "los valores de esta línea solo deben modificarse ligeramente para que la parte antes de que
/etc/passwdtenga exactamente 104 bytes de longitud "? ¿Por qué se omitió/tmpen la línea anterior (es decir, por qué no se indica:" la porción antes de/tmp/etc/passwdtiene exactamente 104 bytes de longitud "? En la página siguiente, la nueva cuenta raíz se escribe en/etc/passwd, pero ¿por qué no en/tmp/etc/passwd? He revisado, y hay 2 carpetas diferentesetcen el sistema; ¿por qué es así?