Bonjour à tous,
Alors voila je cherche actuellement à reproduire sur ma machine (un ubuntu 11.04 dans une machine virtuelle VMware) un exemple d'exploitation d'un buffer overflow, ici : http://lasecwww.epfl.ch/~oechslin/advbof.pdf (page 12). En fait je ne comprend pas pourquoi alors que j’exécute la même chose avec la même ligne de commande, le segfault ne se produit pas au même moment.
Voila le code (que je compile en ajoutant -fno-stack-protector pour désactiver la détection et le blocage des segfault)
Par exemple dans le tuto il fait et obtient
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 #include <stdio.h> main (int argc, char *argv[]) { char buffer[256]; if (argc > 1) strcpy(buffer,argv[1]); }
Alors que moi avec la même commande je n'ai pas de segfault,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 ouah@weed:~$ ./vuln1 `perl -e 'print "B"x260'`AAAA Segmentation fault (core dumped)
il se produit a partir du moment ou je met 8 A au lieu de 4. Et ce n'est pas un core dumped.
Comment peut on expliquer que le segfault ne se produise pas au même moment ? Car j'utilise une VM ? Car j'ai un proc 64bits ? A cause de Ubuntu ? De la version de gcc ? Bref, je ne comprend pas et m'en remet donc aux pros de linux qui pourraient m'aider a comprendre ceci !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 toto@ubuntu:~$ ./vuln1 `perl -e 'print "B"x260'`AAAA toto@ubuntu:~$ ./vuln1 `perl -e 'print "B"x260'`AAAAA toto@ubuntu:~$ ./vuln1 `perl -e 'print "B"x260'`AAAAAA toto@ubuntu:~$ ./vuln1 `perl -e 'print "B"x260'`AAAAAAA toto@ubuntu:~$ ./vuln1 `perl -e 'print "B"x260'`AAAAAAAA Erreur de segmentation
Merci d'avance.
Zarohn.
Partager