Oppure

Loading
22/06/08 16:04
Bond93
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:
#include <stdio.h>
#include <string.h>
int main( int argc, char **argv ){
char bof[100];
strcpy( bof, argv[1] );
return 0;
}

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...
aaa
23/06/08 10:38
^JAVA^
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.
aaa
23/06/08 18:19
Bond93
Lo ho provato su slackware 12 ( a cui fa riferimento il tutorial )... Cmq anche su win da gli stessi problemi
aaa
26/06/08 7:49
gantonio
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.

aaa
26/06/08 8:24
Bond93
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
aaa
26/06/08 10:14
gantonio
gcc e' il compilatore ... ma ne esistono tante versioni ... quale usi ? Quale e' indicata nel tuo tutorial ?
aaa
26/06/08 11:35
Bond93
Allora vi posto il tutorial:
blacklight.gotdns.org/wiki/index.php/…
Usando anche lui Slackware 12 e lo stesso gdb penso che anche gcc sia la stessa versione....:-?
aaa
26/06/08 12:11
gantonio
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 ...
aaa