Ricardo Catalinas Jiménez
2004-07-12 11:39:27 UTC
Hola a todos.
El codigo al que me refiero esta pasteado aqui
(http://rafb.net/paste/results/tlGU7e94.html).
El codigo esta compuesto por 2 programas, uno es el vulnerable y el otro
aprovecha el agujero de seguridad del primero.
Me he informado del funcionamiento general de los bufferoverflows (los
del stack) y mirando este codigo tengo una simple duda en una linea en
concreto.
Antes de nada comentar que la variable 'ret' es la que contendra la
direccion en la que empezara nuestro shellcode o nop sled (dependiendo,
pero para el caso da igual). Este valor se escribira a lo largo del
stack hasta sobrescribir la direccion de retorno de la funcion, por lo
que se ejecutara nuestro codigo al salir de dicha funcion.
Hasta aqui todo claro, el funcionamiento general del exploit lo
entiendo. Mi duda se encuantra en la linea 39:
Sabiendo para que sirve la variable 'ret', se supone que averiguamos
dicha direccion en la que empieza el buffer (con nuestro shellcode) con
la funcion 'sp'. Mi duda es que relacion guarda el valor del 'esp' con
dicha direccion en ese momento. A mi entender, el 'esp' esta en ese
momento apuntando a la variable 'ptr' (la cual es local, por lo que se
almacena en el stack, y es la ultima que se ha declado, por lo que
tendra la direccion mas baja dentro del stack).
Por tanto, resumiendo, lo que to entiendo es que con esa funcion
conseguimos la direccion de 'ptr', la cual no es la deseada.
Como el exploit funciona, y se que soy yo el que me equivoco, me
gustaria que alguien me pudiese aclarar que es lo que realmente sucede
en esa linea de codigo.
Gracias por vuestra paciencia.
Saludos
El codigo al que me refiero esta pasteado aqui
(http://rafb.net/paste/results/tlGU7e94.html).
El codigo esta compuesto por 2 programas, uno es el vulnerable y el otro
aprovecha el agujero de seguridad del primero.
Me he informado del funcionamiento general de los bufferoverflows (los
del stack) y mirando este codigo tengo una simple duda en una linea en
concreto.
Antes de nada comentar que la variable 'ret' es la que contendra la
direccion en la que empezara nuestro shellcode o nop sled (dependiendo,
pero para el caso da igual). Este valor se escribira a lo largo del
stack hasta sobrescribir la direccion de retorno de la funcion, por lo
que se ejecutara nuestro codigo al salir de dicha funcion.
Hasta aqui todo claro, el funcionamiento general del exploit lo
entiendo. Mi duda se encuantra en la linea 39:
Sabiendo para que sirve la variable 'ret', se supone que averiguamos
dicha direccion en la que empieza el buffer (con nuestro shellcode) con
la funcion 'sp'. Mi duda es que relacion guarda el valor del 'esp' con
dicha direccion en ese momento. A mi entender, el 'esp' esta en ese
momento apuntando a la variable 'ptr' (la cual es local, por lo que se
almacena en el stack, y es la ultima que se ha declado, por lo que
tendra la direccion mas baja dentro del stack).
Por tanto, resumiendo, lo que to entiendo es que con esa funcion
conseguimos la direccion de 'ptr', la cual no es la deseada.
Como el exploit funciona, y se que soy yo el que me equivoco, me
gustaria que alguien me pudiese aclarar que es lo que realmente sucede
en esa linea de codigo.
Gracias por vuestra paciencia.
Saludos
--
Ricardo Catalinas Jimenez th1nk3r(at)server01(dot)org
Madrid, Spain.
Ricardo Catalinas Jimenez th1nk3r(at)server01(dot)org
Madrid, Spain.