🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: es.comp.os.linux.programacion
Article #27

Re: Duda en un bufferoverflow simple

#27
From: Ignatius
Date: Thu, 15 Jul 2004 19:58
63 lines
3662 bytes
Ricardo Catalinas Jim�nez escribi�:
> 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


 > Por tanto, resumiendo, lo que to entiendo es que con esa funcion 
conseguimos la direccion de 'ptr', la cual no es la deseada.


En realidad va a ser una direcci�n menor que la de ptr, ya que
se asigna dentro del marco de pila de la funci�n sp().

Lo que yo creo que intenta es aproximar sobre que valores puede andar el 
ESP dentro de vuln. Precisamente como es un valor aproximado necesitamos
llenar por delante de NOP para darnos un margen de error de unos cuantos
bytes.

De todas formas hay un error en el programa. Deberias poner un offset 
m�s grande que 0. (Yo he probado con 400 y funciona bien). En caso 
contrario salta un Segmentation fault. El problema es que el SP al 
leerlo est� demasiado cerca de la base de la pila, por lo que al 
escribir el buffer se sobrepasa ese l�mite y salta dicha segmentation 
fault (se ha desbordado demasiado la pila).

Espero que te sirva de ayuda.

Un saludo,
Ignatius.
Technical Details
Message-ID: <2lo6bmFes4qmU2@uni-berlin.de>
Path: arc1-ca.pugleaf.net!g2news1.google.com!news2.google.com!fu-berlin.de!uni-berlin.de!not-for-mail
References: <nSuIc.9153$r4.276266@news-reader.eresmas.com>

Show Full Headers
Complete Article Headers
X-Google-Thread: f86c8,7b5cc85df5138e1c
X-Google-Thread: 10f58f,7b5cc85df5138e1c
X-Google-Attributes: gidf86c8,gid10f58f,public
X-Google-Language: SPANISH,ASCII
Path: arc1-ca.pugleaf.net!g2news1.google.com!news2.google.com!fu-berlin.de!uni-berlin.de!not-for-mail
From: Ignatius <_Ignatius_NOT_FOR_MAIL@telefonica.net>
Newsgroups: es.comp.os.linux.programacion,es.comp.lenguajes.c
Subject: Re: Duda en un bufferoverflow simple
Date: Thu, 15 Jul 2004 21:58:45 +0200
Lines: 63
Message-ID: <2lo6bmFes4qmU2@uni-berlin.de>
References: <nSuIc.9153$r4.276266@news-reader.eresmas.com>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 8bit
X-Trace: news.uni-berlin.de 7097py2bSWik1phlHXRJAAcWyh+6n1Tjg8PKNXn2XrLEJsOtrv
User-Agent: Mozilla Thunderbird 0.6 (X11/20040614)
X-Accept-Language: es-es, es
In-Reply-To: <nSuIc.9153$r4.276266@news-reader.eresmas.com>