Stack overflow: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica
Nessun oggetto della modifica
Riga 3:
 
I moderni sistemi operativi sono dotati di vari meccanismi di protezione e randomizzazione dello stack, e di riorganizzazione fisica delle variabili sensibili (per evitare la sovrascrittura di puntatori).
 
=== Esempio di programma vulnerabile in Linux ===
<source lang="c">
#include <stdio.h>
#include <string.h>
 
int main(int argc, char *argv[])
{
char buf[16];
strcpy(buf, argv[1]);
};
</source>
 
Se '''0xbffff7c4''' è l'indirizzo di memoria di '''buf''', allora:
<source lang="text">
# gdb --args ./test `perl -e 'print "\xc8\xf7\xff\xbf"x5'`
GNU gdb 6.8-debian
Copyright (C) 2008 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "i486-linux-gnu"...
(gdb) run
Starting program: /tmp/test �����������������
 
Program received signal SIGILL, Illegal instruction.
0xbffff7da in ?? ()
 
</source>
 
redirige l'esecuzione alla locazione '''0xbffff7c8''', fino ad arrivare a 0xbffff7da dove è presente - in questo caso - un'istruzione non valida.
 
{{Portale|Sicurezza informatica}}