Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
© FUOC • P06/M2107/01769<br />
Desbordamiento<br />
(buf1 + 12)<br />
parámetro_3=”c”=3<br />
parámetro_2=”b”=2<br />
parámetro_1=”a”=1<br />
RET<br />
SFP<br />
buf1[5]<br />
buf2[10]<br />
crecimiento<br />
de la pila<br />
50 <strong>Ataques</strong> <strong>contra</strong> <strong>redes</strong> <strong>TCP</strong>/<strong>IP</strong><br />
Parámetros<br />
de la función<br />
Dirección de<br />
retorno de la<br />
llamada a la<br />
función<br />
Variables<br />
locales a la<br />
función<br />
Para poder llevar a cabo el desbordamiento es necesario conocer la arquitectura del sistema<br />
en el que se está ejecutando el programa, así como su sistema operativo. A partir de<br />
esta información, será posible conocer, por ejemplo, el sentido de crecimiento de la pila<br />
de ejecución (puede ser a direcciones menores de memoria o a direcciones mayores), la<br />
definición del puntero de pila (si éste hace referencia a la última posición ocupada en la<br />
pila o a la primera posición libre), etc.<br />
Asimismo, se requiere conocer también en detalle el orden en el que se depositan los<br />
distintos elementos en la pila: el puntero hacia el marco anterior (SFP), la dirección de<br />
retorno (RET), el orden de las variables locales y los parámetros pasados a la función, etc.<br />
Con toda esta información, se podrá introducir un valor en la posición de la dirección de<br />
regreso que modifique el flujo de ejecución justo en el punto que se desee, es decir, una<br />
posición de memoria en el que se haya almacenado previamente el código que hay que<br />
ejecutar. Generalmente, éste suele ser el código en ensamblador necesario para abrir una<br />
consola de sistema (shellcode).<br />
Desbordamiento<br />
(buf1 + 12)<br />
ShellCode<br />
parámetro_3=”c”=3<br />
parámetro_2=”b”=2<br />
parámetro_1=”a”=1<br />
RET<br />
SFP<br />
Buffer[100]=”\xeb\x0b\xd8\<br />
… ... … ... … ... …<br />
… ... … ... … ... …<br />
\xdc\xda\xff/bin/sh”<br />
crecimiento<br />
de la pila<br />
Parámetros<br />
de la función<br />
Dirección de<br />
retorno de la<br />
llamada a la<br />
función<br />
Variables<br />
locales a la<br />
función