Article View: es.comp.os.linux.programacion
Article #1096Re: buff overflow
From: arrase
Date: Wed, 10 May 2006 23:40
Date: Wed, 10 May 2006 23:40
50 lines
3165 bytes
3165 bytes
Pedro Maicas wrote:
>
> Yo creo que te equivocas, en muchas funciones es imposible
> comprobar el tama�o de un buffer sin cambiar su interface,
> ya que una funcion que lleva como par�metro un puntero a
> un buffer (que ser� de entrada) y no lleva un par�metro
> que indique su tama�o, no tiene modo de comprobar el
> tama�o real del buffer.
>
> Saludos :-) -Pedro-
Es cierto, ha raiz de esta respuesta he preguntado a Jack, de Gulcas.org
y dado razones tecnicas de ello:
Imposible del todo.
Si reservas un buffer de 10 bytes, puedes, en C, hacer buffer[2]=23
o buffer[100000]=42 ya que C solo se limita a pillar &buffer o &buffer[0]
y sumarle el tama�o de un elemento x el elemento que solicitas...
en el caso que la direcci�n calculada no tenga privilegios de acceso
da un bonito segmentation fault, sino se sobreescribe sin m�s.
Haz un programa simple, y estudia la pila con el gdb, no hay ninguna
info referente a cu�nto ocupan los buffers (vectores), es m�s, C solo
se preocupa en reservarte el tama�o que le pidas, lo que luego pase es
cosa tuya... bueno, almenos en los vectores reservados "est�ticamente",
es decir, sin malloc.
Tambien encuentro interesante este otro comentario de Jack:
.....el buffer overflow es una t�cnica un poco pasada de moda a ra�z de
la llegada del kernel 2.6.11 que introduce aleatorizaci�n en las
direcciones de la pila del ejecutable, por lo que es casi imposible
acertar en que direcci�n reside el EIP... aunque tambi�n hay t�cnicas
para acertarlo....
...La aleatorizaci�n tiene un rango de 8 MB.....
Saludetes.
--
<arrase@gulcas.org><http://arrase.no-ip.org><www.gulcas.org>
<Gnupg Keys: http://arrase.no-ip.org/pubkey.txt>
print "".join(map(lambda numChar:filter(lambda x:(x<"0") or \
(x>"9"),numChar),["0"+chr(104)+"0","1"+chr(111)+"1","2"+chr(108)+"2", \
"3"+chr(97)+"3","4"+chr(32)+"4","5"+chr(109)+"5","6"+chr(117)+"6", \
"7"+chr(110)+"7","8"+chr(100)+"8","9"+chr(111)+"9"]))
Technical Details
Message-ID:
<e3tt7c$7v2$1@hercules.cohp1>Path:
arc1-ca.pugleaf.net!g2news2.google.com!news3.google.com!news.glorb.com!news.antakira.com!cagarruta.escomposlinux.org!hercules.escomposlinux.org!escomposlinux.org!not-for-mailReferences:
<e3sf09$fdj$1@hercules.cohp1> <1gh36210hhjcm14chf7dj79ubrocvanc8m@4ax.com>Show Full Headers
Complete Article Headers
X-Google-Thread: f86c8,64071a3495c20e X-Google-Attributes: gidf86c8,public X-Google-Language: SPANISH,ASCII Path: arc1-ca.pugleaf.net!g2news2.google.com!news3.google.com!news.glorb.com!news.antakira.com!cagarruta.escomposlinux.org!hercules.escomposlinux.org!escomposlinux.org!not-for-mail From: arrase <arrase@gulcas.org> Newsgroups: es.comp.os.linux.programacion Subject: Re: buff overflow Date: Thu, 11 May 2006 01:40:14 +0200 Organization: escomposlinux.org Lines: 50 Message-ID: <e3tt7c$7v2$1@hercules.cohp1> References: <e3sf09$fdj$1@hercules.cohp1> <1gh36210hhjcm14chf7dj79ubrocvanc8m@4ax.com> Reply-To: arrase@gmail.com NNTP-Posting-Host: 168.red-80-38-162.staticip.rima-tde.net Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8bit X-Trace: hercules.cohp1 1147303981 8162 80.38.162.168 (10 May 2006 23:33:01 GMT) X-Complaints-To: newsmaster@news-17.escomposlinux.org NNTP-Posting-Date: Wed, 10 May 2006 23:33:01 +0000 (UTC) User-Agent: Thunderbird 1.5.0.2 (X11/20060502) In-Reply-To: <1gh36210hhjcm14chf7dj79ubrocvanc8m@4ax.com> X-Enigmail-Version: 0.94.0.0