Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Buffer OverFlow
Forum - C/C++ - Buffer OverFlow

Avatar
Bond93 (Ex-Member)
Pro


Messaggi: 135
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 18:04
Domenica, 22/06/2008
Buongiorno  studiando mi sono imbattuto nel buffer overflow e mi è venuta la curiosità di provare a vedere come funzionava ( sò benissimo che disprezzate cracker ecc ma qui è per puro interesse... ) ho scritto un codice di questo tipo proposto da una guida:
Codice sorgente - presumibilmente C++

  1. #include <stdio.h>
  2. #include <string.h>
  3. int main( int argc, char **argv ){
  4. char bof[100];
  5. strcpy( bof, argv[1] );
  6. return 0;
  7. }


lo luncio usando l'iinterprete perl per far stampare nella linea di comando 1000 "B" e chiaramente segmenta...
Quindi quando lo passo a gbd nei registri mi dice di aver sovrascritto ebp ma non eip...
Io ci ho un po' studiato mettendo + caratteri nella linea perl ma nulla eip non si sovrascrive qualcuno sa il perchè? Ripeto non ho interessi criminali:-| è per informazione...

PM Quote
Avatar
^JAVA^ (Ex-Member)
Pro


Messaggi: 93
Iscritto: 06/12/2007

Segnala al moderatore
Postato alle 12:38
Lunedì, 23/06/2008
Ciao, ma il Buffer OverFlow su che OS lo stai sperimantando?
Perchè se lo stai provando su Linux alcune distribuzioni utilizzano delle protezioni contro l' OverFlow in modo da non sostituire EIP.

PM Quote
Avatar
Bond93 (Ex-Member)
Pro


Messaggi: 135
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 20:19
Lunedì, 23/06/2008
Lo ho provato su slackware 12 ( a cui fa riferimento il tutorial )... Cmq anche su win da gli stessi problemi

PM Quote
Avatar
gantonio (Normal User)
Guru^2


Messaggi: 1532
Iscritto: 09/09/2007

Segnala al moderatore
Postato alle 9:49
Giovedì, 26/06/2008
Il problema dipende molto da come e' organizzato lo stack dal compilatore e da cosa fa il compilatore per evitare i buffer overflow.

Non dipende da Windows o Linux ma dal compilatore e dal linker usato.


PM Quote
Avatar
Bond93 (Ex-Member)
Pro


Messaggi: 135
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 10:24
Giovedì, 26/06/2008
quello che mi pareva strano è che usando lo stesso compilatore sistema operativo ecc. non ottenessi lo stesso risultato del tutorial...:-?
La distro usata è Slackware 12 e il  compilatore gcc...:-| Non riesco proprio a capire

PM Quote
Avatar
gantonio (Normal User)
Guru^2


Messaggi: 1532
Iscritto: 09/09/2007

Segnala al moderatore
Postato alle 12:14
Giovedì, 26/06/2008
gcc e' il compilatore ... ma ne esistono tante versioni ... quale usi ? Quale e' indicata nel tuo tutorial ?

PM Quote
Avatar
Bond93 (Ex-Member)
Pro


Messaggi: 135
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 13:35
Giovedì, 26/06/2008
Allora vi posto il tutorial:
http://blacklight.gotdns.org/wiki/index.php/Buffer_overflow
Usando anche lui Slackware 12 e lo stesso gdb penso che anche gcc sia la stessa versione....:-?

PM Quote
Avatar
gantonio (Normal User)
Guru^2


Messaggi: 1532
Iscritto: 09/09/2007

Segnala al moderatore
Postato alle 14:11
Giovedì, 26/06/2008
In Windows, con devcpp 4.9.9.2, il buffer overflow si presenta.

Con Visual C++ 2003 (2005 e 2008), non succede perche' il compilatore adotta contromisure apposite ...

PM Quote