🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Duda en un bufferoverflow simple

#26
From: Ricardo Catalinas Jiménez
Date: Mon, 12 Jul 2004 11:39
40 lines
2956 bytes
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
-- 
Ricardo Catalinas Jimenez   th1nk3r(at)server01(dot)org
Madrid, Spain.
Technical Details
Message-ID: <nSuIc.9153$r4.276266@news-reader.eresmas.com>
Path: arc1-ca.pugleaf.net!g2news1.google.com!news1.google.com!news.glorb.com!newsfeeder.wxs.nl!news3.kpn.net!news.kpn.net!teleglobe.net!62.81.31.29.MISMATCH!cyclone.auna.com!news-feeder.eresmas.com!news-reader.eresmas.com!not-for-mail

Show Full Headers
Complete Article Headers
X-Google-Thread: f86c8,7b5cc85df5138e1c,start
X-Google-Thread: 10f58f,7b5cc85df5138e1c,start
X-Google-Attributes: gidf86c8,gid10f58f,public
X-Google-Language: SPANISH,ASCII-7-bit
Path: arc1-ca.pugleaf.net!g2news1.google.com!news1.google.com!news.glorb.com!newsfeeder.wxs.nl!news3.kpn.net!news.kpn.net!teleglobe.net!62.81.31.29.MISMATCH!cyclone.auna.com!news-feeder.eresmas.com!news-reader.eresmas.com!not-for-mail
From: Ricardo Catalinas Jiménez <nospam@nospam.com>
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7) Gecko/20040618
X-Accept-Language: en-us, en
MIME-Version: 1.0
Newsgroups: es.comp.os.linux.programacion,es.comp.lenguajes.c
Followup-To: es.comp.os.linux.programacion
Subject: Duda en un bufferoverflow simple
Content-Type: text/plain; charset=us-ascii; format=flowed
Content-Transfer-Encoding: 7bit
Lines: 40
Message-ID: <nSuIc.9153$r4.276266@news-reader.eresmas.com>
Date: Mon, 12 Jul 2004 13:39:27 +0200
NNTP-Posting-Host: 62.174.242.172
X-Complaints-To: abuse@eresmas.com
X-Trace: news-reader.eresmas.com 1089632787 62.174.242.172 (Mon, 12 Jul 2004 13:46:27 MET DST)
NNTP-Posting-Date: Mon, 12 Jul 2004 13:46:27 MET DST
Organization: eresMas