7/26/2019 Bof 1 Slides
1/71
COLE
SUPRIEURE
DLECTRICIT
Connaissance de la menace
Attaques par debordement de buffer
Frederic Tronel
Supelec
Campus de Rennes
Avenue de la Boulaie
Cesson-Sevigne
13 octobre 2014
Derni er com mi t cb48236 (HEAD, m aster) par Frederi c Tronel a Mon Oct 13 16 :02 :18 2014 +0200
Modifications non commitees ?? ../2/bof-2-slides.synctex.gz(busy)
Fichiers .tex biblio.tex bof-1-handout.tex bof-1-slides.tex cours1.tex entete.tex execve.tex exit.tex fork.tex mmap.tex mprotect.tex
Figures .fig
stack@50,52-55,57,64.fig stack@50-53,55-56,59-60,62.fig stack@50-53,55-56,59,65,67.fig stack@50-53,55-56,64-65.fig stack@50,53-
55,57,64.fig stack@50-53,56,59-60,63,66-67.fig stack@50-53,56,59-60,63,66.fig stack@50-53,56,59-62,67.fig stack@50-53,56,59-62.fig
stack@50,54-55,57,64.fig stack@50,54,57,64.fig stack@50-55,57,64.fig stack@50-56,59,67.fig stack@50,57,64.fig
Autres figures asmx86.jpg exemple1.png kernel-development.jpg linkers loaders.jpg linux-kernel.jpg OS-tanenbaum.jpg wikipedia.png windows-internals.jpg
Attaque par debordement de buffer 13 octobre 2014 1 / 56
http://find/7/26/2019 Bof 1 Slides
2/71
COLE
SUPRIEURE
DLECTRICIT
Cours 1
Attaque par debordement de buffer 13 octobre 2014 2 / 56
http://goforward/http://find/http://goback/7/26/2019 Bof 1 Slides
3/71
COLE
SUPRIEURE
DLECTRICIT Bibliographie
Systemes dexploitation, Andrew Tanenbaum, Pearson Education, 3eme Edition, 26 septembre
2008, ISBN-10 : 2744072990
Microsoft Windows Internals : Part 1 and 2. Mark E. Russinovich, David A. Soloman et Alex
Ionescu Microsoft Press, SixiemeEdition, 17 avril 2012, ISBN-10 : 0735648739
Understanding The Linux Kernel, Daniel P. Bovet et Marco Cesati, OReilly, Troisiemeedition, 15
decembre 2005, ISBN-10 : 0596005652
Attaque par debordement de buffer Bibliographie 13 octobre 2014 3 / 56
http://goforward/http://find/http://goback/7/26/2019 Bof 1 Slides
4/71
COLE
SUPRIEURE
DLECTRICIT Bibliographie
Linux Kernel Development, Robert Love, Addison Wesley, TroisiemeEdition, 22 juin 2010, ISBN-
10 : 0672329468
Assembleur x86, Irvine, CampusPress, 16 juin 2004, ISBN-10 : 2744015342
Wikipedia, Lencyclopedie libre.
Attaque par debordement de buffer Bibliographie 13 octobre 2014 4 / 56
http://find/7/26/2019 Bof 1 Slides
5/71
COLE
SUPRIEURE
DLECTRICIT Bibliographie
Linkers and Loaders, John R. Levine, Morgan Kaufmann Publishers In Edition revisee, 25 oc-
tobre 1999, ISBN-10 : 1558604960
Attaque par debordement de buffer Bibliographie 13 octobre 2014 5 / 56
http://find/7/26/2019 Bof 1 Slides
6/71
COLE
SUPRIEURE
DLECTRICIT
1 Conventions dappels
2 Appels systeme
3 Organisation de lespace virtuel dun processus
4 Organisation de la pile des programmesecrits en C
Attaque par debordement de buffer Plan du cours 13 octobre 2014 6 / 56
http://find/http://goback/7/26/2019 Bof 1 Slides
7/71
COLE
SUPRIEURE
DLECTRICIT Differentes conventions dappels
Convention Passage Ordre Nettoyage Registresa preserver
dappels des arguments des arguments de la pile appele appelant
C declaration call Pile Droite a Appelant %ebx %edi %eax %ecx
gauche %esi %ebp %edx Standard call Pile Droite Appele %ebx %edi
a gauche %esi %ebp
Fast call Pile Droite Appele %ebx %edi
et registres a gauche %esi %ebp
Attaque par debordement de buffer Conventions dappels 13 octobre 2014 7 / 56
http://find/7/26/2019 Bof 1 Slides
8/71
COLE
SUPRIEURE
DLECTRICIT
Sous Linux les conventions dappels suivantes sont utilisees :
Standard call : pour les appels de fonctions generees par lescompilateurs C et C++.
Fast call : pour les appels systemes.
Attaque par debordement de buffer Conventions dappels 13 octobre 2014 8 / 56
A l ` d l
http://find/http://goback/7/26/2019 Bof 1 Slides
9/71
COLE
SUPRIEURE
DLECTRICIT
Appels systemes : porte dentree vers le
systeme dexploitation
Un appel systeme permet de demander au systeme dexploitation la
realisation dune tache precise. Par exemple :
Creation de fichiers/repertoire.
Lecture/ecriture de donnees dans un fichier.
Creation/destruction dun processus.
. . .
Attaque par debordement de buffer Appels systeme 13 octobre 2014 9 / 56
http://find/7/26/2019 Bof 1 Slides
10/71
COLE
SUPRIEURE
DLECTRICIT
Creation de processus
Attaque par debordement de buffer Appels systeme 13 octobre 2014 10 / 56
http://find/7/26/2019 Bof 1 Slides
11/71
COLE
SUPRIEURE
DLECTRICIT Page de manuel de fork
Attaque par debordement de buffer Appels systeme 13 octobre 2014 11 / 56
http://find/http://goback/7/26/2019 Bof 1 Slides
12/71
COLE
http://find/7/26/2019 Bof 1 Slides
13/71
COLE
SUPRIEURE
DLECTRICIT Page de manuel de fork
Attaque par debordement de buffer Appels systeme 13 octobre 2014 13 / 56
http://find/7/26/2019 Bof 1 Slides
14/71
COLE
http://find/7/26/2019 Bof 1 Slides
15/71
COLE
SUPRIEURE
DLECTRICIT Page de manuel de execve
Attaque par debordement de buffer Appels systeme 13 octobre 2014 15 / 56
http://find/7/26/2019 Bof 1 Slides
16/71
COLE
http://find/7/26/2019 Bof 1 Slides
17/71
SUPRIEURE
DLECTRICIT Page de manuel de execve
Attaque par debordement de buffer Appels systeme 13 octobre 2014 17 / 56
http://find/7/26/2019 Bof 1 Slides
18/71
http://find/7/26/2019 Bof 1 Slides
19/71
COLE
P d l d
http://find/7/26/2019 Bof 1 Slides
20/71
SUPRIEURE
DLECTRICIT Page de manuel de execve
Attaque par debordement de buffer Appels systeme 13 octobre 2014 20 / 56
COLE
P d l d
http://find/7/26/2019 Bof 1 Slides
21/71
SUPRIEURE
DLECTRICIT Page de manuel de execve
Attaque par debordement de buffer Appels systeme 13 octobre 2014 21 / 56
COLE
SUPRIEURE
http://find/7/26/2019 Bof 1 Slides
22/71
SUPRIEURE
DLECTRICIT
Destruction dun processus
Attaque par debordement de buffer Appels systeme 13 octobre 2014 22 / 56
COLE
SUPRIEURE Page de manuel de exit
http://find/7/26/2019 Bof 1 Slides
23/71
SUPRIEURE
DLECTRICIT Page de manuel de exit
Attaque par debordement de buffer Appels systeme 13 octobre 2014 23 / 56
COLE
SUPRIEURE Page de manuel de exit
http://find/7/26/2019 Bof 1 Slides
24/71
SUPRIEURE
DLECTRICIT Page de manuel de exit
Attaque par debordement de buffer Appels systeme 13 octobre 2014 24 / 56
COLE
SUPRIEURE
http://find/7/26/2019 Bof 1 Slides
25/71
SU U
DLECTRICIT
Gestion de lespace dadressage
Attaque par debordement de buffer Appels systeme 13 octobre 2014 25 / 56
http://find/7/26/2019 Bof 1 Slides
26/71
http://find/7/26/2019 Bof 1 Slides
27/71
http://find/7/26/2019 Bof 1 Slides
28/71
COLE
SUPRIEURE Page de manuel de mmap
http://find/7/26/2019 Bof 1 Slides
29/71
DLECTRICIT Page de manuel de mmap
Attaque par debordement de buffer Appels systeme 13 octobre 2014 29 / 56
http://find/7/26/2019 Bof 1 Slides
30/71
COLE
SUPRIEURE
DLECTRICIT Page de manuel de mmap
http://find/7/26/2019 Bof 1 Slides
31/71
DLECTRICIT Page de manuel de mmap
Attaque par debordement de buffer Appels systeme 13 octobre 2014 31 / 56
COLE
SUPRIEURE
DLECTRICIT Page de manuel de mmap
http://find/7/26/2019 Bof 1 Slides
32/71
D LECTRICIT g p
Attaque par debordement de buffer Appels systeme 13 octobre 2014 32 / 56
COLE
SUPRIEURE
DLECTRICIT Page de manuel de mmap
http://find/7/26/2019 Bof 1 Slides
33/71
D LECTRICIT g p
Attaque par debordement de buffer Appels systeme 13 octobre 2014 33 / 56
COLE
SUPRIEURE
DLECTRICIT Page de manuel de mprotect
http://goforward/http://find/http://goback/7/26/2019 Bof 1 Slides
34/71
D LECTRICIT g p
Attaque par debordement de buffer Appels systeme 13 octobre 2014 34 / 56
COLE
SUPRIEURE
DLECTRICIT Page de manuel de mprotect
http://goforward/http://find/http://goback/7/26/2019 Bof 1 Slides
35/71
g p
Attaque par debordement de buffer Appels systeme 13 octobre 2014 35 / 56
COLE
SUPRIEURE
DLECTRICIT Page de manuel de mprotect
http://find/7/26/2019 Bof 1 Slides
36/71
Attaque par debordement de buffer Appels systeme 13 octobre 2014 36 / 56
COLE
SUPRIEURE
DLECTRICIT Page de manuel de mprotect
http://goforward/http://find/http://goback/7/26/2019 Bof 1 Slides
37/71
Attaque par debordement de buffer Appels systeme 13 octobre 2014 37 / 56
COLE
SUPRIEURE
DLECTRICIT Anatomie dun appel systeme
http://find/7/26/2019 Bof 1 Slides
38/71
Les appels systeme sont declenches par des interruptions logicielles. Ceci est
possible via linstructionint. Cette instruction prend un seul parametre dont la
taille est limiteea un octet. A chaque valeur possible est associe un morceau
de code (appelevecteur dinterruption). Cest ce code qui sera execute lors du
declenchement de linterruption. Les interruptions logicielles sont executees
dans le mode priviliegie du processeur. Cest ce qui permet aux programmes
utilisateur de passer en mode noyau lors des appels systeme.
Attaque par debordement de buffer Appels systeme 13 octobre 2014 38 / 56
COLE
SUPRIEURE
DLECTRICIT Anatomie dun appel systeme
http://find/7/26/2019 Bof 1 Slides
39/71
Sous Linux il y a une seule interruption qui gere lensemble des appels
systemes (int 0x80). Les appels sont donc multiplexes. Le demultiplexage est
assure par le vecteur dinterruption. Il redirige lappel vers la portion de code letraitant en se basant sur la valeur contenue dans le registre %eax. Les
parametres de lappel systeme sont passes dans les registres restants
(%ebx,%ecx,%edx,%esi,%edi).
Attaque par debordement de buffer Appels systeme 13 octobre 2014 39 / 56
COLE
SUPRIEURE
DLECTRICIT Liste des appels systeme du noyau Linux
http://goforward/http://find/http://goback/7/26/2019 Bof 1 Slides
40/71
#define N R r e s t a r t s y s c a l l 0
#define N R e x i t 1#define N R f o r k 2#define NR read 3#define N R w r i t e 4#define NR open 5#define N R cl ose 6#define N R w a i t p i d 7#define N R c r e at 8#define N R l i n k 9
#define N R u n l i n k 10#define NR execve 11[ . . . ]
#define N R s e l e c t 82#define NR sym l in k 83#define N R o l d l s t a t 84#define N R r e a d l i n k 85#define N R u s e l i b 86#define NR swapon 87#define NR r eboot 88#define N R r e a d d i r 89#define NR mmap 90#define NR munmap 91#define N R t r u n c a t e 92
#define NR uname 122
#define N R m o d i f y l d t 123#define NR ad j t i m ex 124#define NR mpr otect 125#define NR sigprocmask 126#define N R cr eate modul e 127#define NR i n i t m o d u l e 128#define N R del ete modul e 129#define N R g et k er ne l s ym s 130#define N R q u o t a c t l 131
#define N R g et pgi d 132[ . . . ]
#define N R f a l l o c a t e 324#define N R t im er fd s et ti me 325#define N R t im er fd g et ti me 326#define N R s i g n a l f d 4 327#define NR ev entf d2 328#define N R e p o l l c r e a t e 1 329#define NR dup3 330
#define NR pipe2 331#define N R i no t i f y i n i t 1 332#define NR preadv 333#define N R p w r i t e v 334
Attaque par debordement de buffer Appels systeme 13 octobre 2014 40 / 56
COLE
SUPRIEURE
DLECTRICIT Organisation
http://find/7/26/2019 Bof 1 Slides
41/71
A la creation dun processus, le noyau met en place dans lespace
dadressage du nouveau processus les zones suivantes :
Code executable.
Tas : zone de memoire virtuelle contigue servanta allouer
dynamiquement des structures de donnees (via par exemple la fonction
malloc).
La pile.
Attaque par debordement de buffer Espace virtuel 13 octobre 2014 41 / 56
COLE
SUPRIEURE
DLECTRICIT
Un exemple de programme compile
statiquement
http://goforward/http://find/http://goback/7/26/2019 Bof 1 Slides
42/71
statiquement
Debut-fin Protections Offset Peripherique Inode Fichier
08048000-080c6000 r-xp 00000000 fe :02 498905 /home/ftronel/Enseignement/Telecom/2009-2010/Cours/P
080c6000-080c7000 rw-p 0007d000 fe :02 498905 /home/ftronel/Enseignement/Telecom/2009-2010/Cours/P080c7000-080eb000 rw-p 00000000 00 :00 0 [heap]
fffe9000-ffffe000 rw-p 00000000 00 :00 0 [stack]
Attaque par debordement de buffer Espace virtuel 13 octobre 2014 42 / 56
COLE
SUPRIEURE
DLECTRICIT Avantages
http://goforward/http://find/http://goback/7/26/2019 Bof 1 Slides
43/71
Plus simple a produire pour la chane de compilation.
Fonctionnement immediat apres installation (toutes les librairies
necessairesa leur fonctionnement sont contenues dans lexecutable).
Appels rapides des fonctions situees dans des librairies.
Attaque par debordement de buffer Espace virtuel 13 octobre 2014 43 / 56
COLE
SUPRIEURE
DLECTRICIT Inconvenients
http://find/7/26/2019 Bof 1 Slides
44/71
Fichiers binaires tres volumineux
Consommation disque inutile. Consommation memoire inutile.
Attaque par debordement de buffer Espace virtuel 13 octobre 2014 44 / 56
COLE
SUPRIEURE
DLECTRICIT Organisation
http://find/7/26/2019 Bof 1 Slides
45/71
A la creation dun processus, le noyau met en place dans lespace
dadressage du nouveau processus les zones suivantes :
Code executable.
Tas : zone de memoire virtuelle contigue servanta allouer
dynamiquement des structures de donnees (via par exemple la fonction
malloc)
Les librairies.
Le chargeur dynamique.
La pile.
Attaque par debordement de buffer Espace virtuel 13 octobre 2014 45 / 56
COLE
SUPRIEURE
DLECTRICIT Bibliotheques partagees
http://find/7/26/2019 Bof 1 Slides
46/71
Cette structure de memoire est mise en place par le systeme dexploitation. Si
le programme est lie dynamiquement a des librairies partagees, la main est
passee au chargeur/editeur dynamique (ld.so). Celui-ci a pour but de charger
les librairies dynamiques dans lespace dadressage virtuel du processus.
Attaque par debordement de buffer Espace virtuel 13 octobre 2014 46 / 56
COLESUPRIEURE
DLECTRICITUn exemple de processus lie
dynamiquement : processus shell
http://find/7/26/2019 Bof 1 Slides
47/71
dynamiquement : processus shell
Debut-fin Protections Offset Peripherique Inode Fichier
08048000-08109000 r-xp 00000000 fe :08 666 /bin/bash
08109000-0810e000 rw-p 000c1000 fe :08 666 /bin/bash
0810e000-08113000 rw-p 00000000 00 :00 0
09a46000-09a80000 rw-p 00000000 00 :00 0 [heap]f74af000-f74b6000 rs 00000000 fe :08 32264 /usr/lib/gconv/gconv-modules.cache
f74b6000-f74c0000 r-xp 00000000 fe :08 12470 /lib/i686/cmov/libnss files-2.10.2.so
f74c0000-f74c1000 rp 00009000 fe :08 12470 /lib/i686/cmov/libnss files-2.10.2.so
f74c1000-f74c2000 rw-p 0000a000 fe :08 12470 /lib/i686/cmov/libnss files-2.10.2.so
. . .
f7632000-f7773000 r-xp 00000000 fe :08 12906 /lib/i686/cmov/libc-2.10.2.so
f7773000-f7775000 rp 00141000 fe :08 12906 /lib/i686/cmov/libc-2.10.2.so
f7775000-f7776000 rw-p 00143000 fe :08 12906 /lib/i686/cmov/libc-2.10.2.so
. . .
f77bf000-f77db000 r-xp 00000000 fe :08 16731 /lib/ld-2.10.2.so
f77db000-f77dc000 rp 0001b000 fe :08 16731 /lib/ld-2.10.2.so
f77dc000-f77dd000 rw-p 0001c000 fe :08 16731 /lib/ld-2.10.2.so
ff955000-ff96a000 rw-p 00000000 00 :00 0 [stack]
Attaque par debordement de buffer Espace virtuel 13 octobre 2014 47 / 56
COLESUPRIEURE
DLECTRICIT Avantages
http://goforward/http://find/http://goback/7/26/2019 Bof 1 Slides
48/71
Fichiers binaires peu volumineux
Consommation disque reduite.
Consommation memoire reduite (partage du code des librairies entre
processus).
Attaque par debordement de buffer Espace virtuel 13 octobre 2014 48 / 56
COLESUPRIEURE
DLECTRICIT Inconvenients
http://find/7/26/2019 Bof 1 Slides
49/71
Plus complexe a produire pour la chane de compilation.
Fonctionnement necessitant dinstaller lensemble des librairies
necessairesa son fonctionnement. Appels plus complexes et plus lents des fonctions situees dans des
librairies.
Attaque par debordement de buffer Espace virtuel 13 octobre 2014 49 / 56
COLESUPRIEURE
DLECTRICIT Etude dun premier exemple
http://find/7/26/2019 Bof 1 Slides
50/71
i n t f u n c t i o n (i n t a , i n t b , i n t c){char b u f f e r 1 [ 5 ] ;char b u f f e r 2 [ 1 0 ] ;
b u f f e r 2 [ 0 ] = a ;
return( 0 ) ;}
i n t main(){f u n c t i o n ( 1 , 2 , 3 ) ;
return( 0 ) ;}
Attaque par debordement de buffer Pile 13 octobre 2014 50 / 56
COLESUPRIEURE
DLECTRICIT Demonstration
http://find/7/26/2019 Bof 1 Slides
51/71
Attaque par debordement de buffer Pile 13 octobre 2014 51 / 56
COLESUPRIEURE
DLECTRICIT Fonction principale
http://find/http://exemple1.mp4/7/26/2019 Bof 1 Slides
52/71
. g l o b l main
. type main , @functionmain:
push ebpmov ebp , espsub esp , 12
mov DWORD PTR [ esp + 8 ] , 3mov DWORD PTR [ esp + 4 ] , 2mov DWORD PTR [ esp ] , 1c a l l f u n c t i o nmov eax , 0leaver e t
i n t main(){f u n c t i o n ( 1 , 2 , 3 ) ;
return( 0 ) ;}
Attaque par debordement de buffer Pile 13 octobre 2014 52 / 56
COLESUPRIEURE
DLECTRICIT Fonction principale
http://goforward/http://find/http://goback/7/26/2019 Bof 1 Slides
53/71
. g l o b l main
. type main , @functionmain:
push ebpmov ebp , espsub esp , 12
mov DWORD PTR [ esp + 8 ] , 3mov DWORD PTR [ esp + 4 ] , 2mov DWORD PTR [ esp ] , 1c a l l f u n c t i o nmov eax , 0leaver e t
i n t main(){f u n c t i o n ( 1 , 2 , 3 ) ;
return( 0 ) ;}
Attaque par debordement de buffer Pile 13 octobre 2014 53 / 56
COLESUPRIEURE
DLECTRICIT Fonction secondaire
http://find/7/26/2019 Bof 1 Slides
54/71
. g l o b l f u nc t i on
. type f u n c t i o n , @ fu nc t io nf u n c t i o n :
push ebpmov ebp , esp
sub esp , 16mov BYTE PTR [ ebp1 5] , 97mov eax , 0leaver e t
i n t f u n c t i o n (i n t a , i n t b , i n t c){char b u f fe r 1 [ 5 ] ;char b u f f e r 2 [ 1 0 ] ;
b u f f e r 2 [ 0 ] = a ;
return( 0 ) ;}
Attaque par debordement de buffer Pile 13 octobre 2014 54 / 56
COLESUPRIEURE
DLECTRICIT Fonction secondaire
http://find/7/26/2019 Bof 1 Slides
55/71
. g l o b l f u nc t i on
. type f u n c t i o n , @ fu nc t io nf u n c t i o n :
push ebpmov ebp , esp
sub esp , 16mov BYTE PTR [ ebp1 5] , 97mov eax , 0leaver e t
i n t f u n c t i o n (i n t a , i n t b , i n t c){char b u f fe r 1 [ 5 ] ;char b u f f e r 2 [ 1 0 ] ;
b u f f e r 2 [ 0 ] = a ;
return( 0 ) ;}
Attaque par debordement de buffer Pile 13 octobre 2014 55 / 56
COLESUPRIEURE
DLECTRICIT Organisation de la pile
http://find/7/26/2019 Bof 1 Slides
56/71
Adresses decroissantes
Adressesdecrois
santes
main:
push ebpmov ebp , espsub esp , 12mov DWORD PTR [ esp + 8 ] , 3mov DWORD PTR [ esp + 4 ] , 2mov DWORD PTR [ esp ] , 1c a l l f u n c t i o n
mov eax , 0leaver e t
f u n c t i o n :
push ebpmov ebp , espsub esp , 16mov BYTE PTR [ ebp1 5] , 97mov eax , 0
leaver e t
Attaque par debordement de buffer Pile 13 octobre 2014 56 / 56
COLESUPRIEURE
DLECTRICIT Organisation de la pile
http://find/7/26/2019 Bof 1 Slides
57/71
esp
Adresses decroissantes
Adressesdecrois
santes
main:
push ebpmov ebp , espsub esp , 12mov DWORD PTR [ esp + 8 ] , 3mov DWORD PTR [ esp + 4 ] , 2mov DWORD PTR [ esp ] , 1c a l l f u n c t i o n
mov eax , 0leaver e t
f u n c t i o n :
push ebpmov ebp , espsub esp , 16mov BYTE PTR [ ebp1 5] , 97mov eax , 0
leaver e t
Attaque par debordement de buffer Pile 13 octobre 2014 56 / 56
COLESUPRIEURE
DLECTRICIT Organisation de la pile
http://find/7/26/2019 Bof 1 Slides
58/71
ebp
esp
Adresses decroissantes
Adressesdecrois
santes
main:
push ebpmov ebp , espsub esp , 12mov DWORD PTR [ esp + 8 ] , 3mov DWORD PTR [ esp + 4 ] , 2mov DWORD PTR [ esp ] , 1c a l l f u n c t i o n
mov eax , 0leaver e t
f u n c t i o n :
push ebpmov ebp , espsub esp , 16mov BYTE PTR [ ebp1 5] , 97mov eax , 0
leaver e t
Attaque par debordement de buffer Pile 13 octobre 2014 56 / 56
COLESUPRIEURE
DLECTRICIT Organisation de la pile
http://find/7/26/2019 Bof 1 Slides
59/71
ebp
esp
00 00 00 03
Adresses decroissantes
Adressesdecrois
santes
main:
push ebpmov ebp , espsub esp , 12mov DWORD PTR [ esp + 8 ] , 3mov DWORD PTR [ esp + 4 ] , 2mov DWORD PTR [ esp ] , 1c a l l f u n c t i o n
mov eax , 0leaver e t
f u n c t i o n :
push ebpmov ebp , espsub esp , 16mov BYTE PTR [ ebp1 5] , 97mov eax , 0
leaver e t
Attaque par debordement de buffer Pile 13 octobre 2014 56 / 56
COLESUPRIEURE
DLECTRICIT Organisation de la pile
http://find/7/26/2019 Bof 1 Slides
60/71
ebp
esp
00 00 00 03
00 00 00 02
Adresses decroissantes
Adressesdecrois
santes
main:
push ebpmov ebp , espsub esp , 12mov DWORD PTR [ esp + 8 ] , 3mov DWORD PTR [ esp + 4 ] , 2mov DWORD PTR [ esp ] , 1c a l l f u n c t i o n
mov eax , 0leaver e t
f u n c t i o n :
push ebpmov ebp , espsub esp , 16mov BYTE PTR [ ebp1 5] , 97mov eax , 0
leaver e t
Attaque par debordement de buffer Pile 13 octobre 2014 56 / 56
COLESUPRIEURE
DLECTRICIT Organisation de la pile
http://find/7/26/2019 Bof 1 Slides
61/71
ebp
esp
00 00 00 03
00 00 00 02
00 00 00 01
Adresses decroissantes
Adressesdecrois
santes
main:
push ebpmov ebp , espsub esp , 12mov DWORD PTR [ esp + 8 ] , 3mov DWORD PTR [ esp + 4 ] , 2mov DWORD PTR [ esp ] , 1c a l l f u n c t i o n
mov eax , 0leaver e t
f u n c t i o n :
push ebpmov ebp , espsub esp , 16mov BYTE PTR [ ebp1 5] , 97mov eax , 0
leaver e t
Attaque par debordement de buffer Pile 13 octobre 2014 56 / 56
COLESUPRIEURE
DLECTRICIT Organisation de la pile
http://find/7/26/2019 Bof 1 Slides
62/71
esp@ retour
ebp
00 00 00 03
00 00 00 02
00 00 00 01
Adresses decroissantes
Adressesdecrois
santes
main:
push ebpmov ebp , espsub esp , 12mov DWORD PTR [ esp + 8 ] , 3mov DWORD PTR [ esp + 4 ] , 2mov DWORD PTR [ esp ] , 1c a l l f u n c t i o n
mov eax , 0leaver e t
f u n c t i o n :
push ebpmov ebp , espsub esp , 16mov BYTE PTR [ ebp1 5] , 97mov eax , 0
leaver e t
Attaque par debordement de buffer Pile 13 octobre 2014 56 / 56
COLESUPRIEURE
DLECTRICIT Organisation de la pile
http://find/7/26/2019 Bof 1 Slides
63/71
espsaved ebp
@ retour
ebp
00 00 00 03
00 00 00 02
00 00 00 01
Adresses decroissantes
Adressesdecrois
santes
main:
push ebpmov ebp , espsub esp , 12mov DWORD PTR [ esp + 8 ] , 3mov DWORD PTR [ esp + 4 ] , 2mov DWORD PTR [ esp ] , 1c a l l f u n c t i o n
mov eax , 0leaver e t
f u n c t i o n :
push ebpmov ebp , espsub esp , 16mov BYTE PTR [ ebp1 5] , 97mov eax , 0
leaver e t
Attaque par debordement de buffer Pile 13 octobre 2014 56 / 56
COLESUPRIEURE
DLECTRICIT Organisation de la pile
http://find/7/26/2019 Bof 1 Slides
64/71
esp ,ebpsaved ebp
@ retour
00 00 00 03
00 00 00 02
00 00 00 01
Adresses decroissantes
Adressesdecrois
santes
main:
push ebpmov ebp , espsub esp , 12mov DWORD PTR [ esp + 8 ] , 3mov DWORD PTR [ esp + 4 ] , 2mov DWORD PTR [ esp ] , 1c a l l f u n c t i o n
mov eax , 0leaver e t
f u n c t i o n :
push ebpmov ebp , espsub esp , 16mov BYTE PTR [ ebp1 5] , 97mov eax , 0
leaver e t
Attaque par debordement de buffer Pile 13 octobre 2014 56 / 56
COLESUPRIEURE
DLECTRICIT Organisation de la pile
http://find/7/26/2019 Bof 1 Slides
65/71
esp
ebpsaved ebp
@ retour
00 00 00 03
00 00 00 02
00 00 00 01
Adresses decroissantes
Adressesdecroissantes
main:
push ebpmov ebp , espsub esp , 12mov DWORD PTR [ esp + 8 ] , 3mov DWORD PTR [ esp + 4 ] , 2mov DWORD PTR [ esp ] , 1c a l l f u n c t i o n
mov eax , 0leaver e t
f u n c t i o n :
push ebpmov ebp , espsub esp , 16mov BYTE PTR [ ebp1 5] , 97mov eax , 0
leaver e t
Attaque par debordement de buffer Pile 13 octobre 2014 56 / 56
COLE
SUPRIEURE
DLECTRICIT Organisation de la pile
http://find/7/26/2019 Bof 1 Slides
66/71
97
esp
ebpsaved ebp
@ retour
00 00 00 03
00 00 00 02
00 00 00 01
Adresses decroissantes
Adressesdecroissantes
main:
push ebpmov ebp , espsub esp , 12mov DWORD PTR [ esp + 8 ] , 3mov DWORD PTR [ esp + 4 ] , 2mov DWORD PTR [ esp ] , 1c a l l f u n c t i o n
mov eax , 0leaver e t
f u n c t i o n :
push ebpmov ebp , espsub esp , 16mov BYTE PTR [ ebp1 5] , 97mov eax , 0
leaver e t
Attaque par debordement de buffer Pile 13 octobre 2014 56 / 56
COLE
SUPRIEURE
DLECTRICIT Organisation de la pile
http://find/7/26/2019 Bof 1 Slides
67/71
97
esp
ebpsaved ebp
@ retour
00 00 00 03
00 00 00 02
00 00 00 01
Adresses decroissantes
Adressesdecroissantes
main:
push ebpmov ebp , espsub esp , 12mov DWORD PTR [ esp + 8 ] , 3mov DWORD PTR [ esp + 4 ] , 2mov DWORD PTR [ esp ] , 1c a l l f u n c t i o n
mov eax , 0leaver e t
f u n c t i o n :
push ebpmov ebp , espsub esp , 16mov BYTE PTR [ ebp1 5] , 97mov eax , 0
leaver e t
Attaque par debordement de buffer Pile 13 octobre 2014 56 / 56
COLE
SUPRIEURE
DLECTRICIT Organisation de la pile
http://find/http://goback/7/26/2019 Bof 1 Slides
68/71
97
esp ,ebpsaved ebp
@ retour
00 00 00 03
00 00 00 02
00 00 00 01
Adresses decroissantes
Adressesdecroissantes
main:
push ebpmov ebp , espsub esp , 12mov DWORD PTR [ esp + 8 ] , 3mov DWORD PTR [ esp + 4 ] , 2mov DWORD PTR [ esp ] , 1c a l l f u n c t i o n
mov eax , 0leaver e t
f u n c t i o n :
push ebpmov ebp , espsub esp , 16mov BYTE PTR [ ebp1 5] , 97mov eax , 0
leaver e t
Attaque par debordement de buffer Pile 13 octobre 2014 56 / 56
COLE
SUPRIEURE
DLECTRICIT Organisation de la pile
http://find/7/26/2019 Bof 1 Slides
69/71
97
esp
saved ebp
@ retour
ebp
00 00 00 03
00 00 00 02
00 00 00 01
Adresses decroissantes
Adressesdecroissantes
main:
push ebpmov ebp , espsub esp , 12mov DWORD PTR [ esp + 8 ] , 3mov DWORD PTR [ esp + 4 ] , 2mov DWORD PTR [ esp ] , 1c a l l f u n c t i o n
mov eax , 0leaver e t
f u n c t i o n :
push ebpmov ebp , espsub esp , 16mov BYTE PTR [ ebp1 5] , 97mov eax , 0
leaver e t
Attaque par debordement de buffer Pile 13 octobre 2014 56 / 56
COLE
SUPRIEURE
DLECTRICIT Organisation de la pile
d d i
http://find/7/26/2019 Bof 1 Slides
70/71
97
esp
saved ebp
@ retour
ebp
00 00 00 03
00 00 00 02
00 00 00 01
Adresses decroissantes
Adressesdecroissantes
main:
push ebpmov ebp , espsub esp , 12mov DWORD PTR [ esp + 8 ] , 3mov DWORD PTR [ esp + 4 ] , 2mov DWORD PTR [ esp ] , 1c a l l f u n c t i o n
mov eax , 0leaver e t
f u n c t i o n :
push ebpmov ebp , espsub esp , 16mov BYTE PTR [ ebp1 5] , 97mov eax , 0
leaver e t
Attaque par debordement de buffer Pile 13 octobre 2014 56 / 56
COLE
SUPRIEURE
DLECTRICIT Organisation de la pile
Ad d i
http://find/7/26/2019 Bof 1 Slides
71/71
97
saved ebp
@ retour
ebp
esp
00 00 00 03
00 00 00 02
00 00 00 01
Adresses decroissantes
Adressesdecroissantes
main:
push ebpmov ebp , espsub esp , 12mov DWORD PTR [ esp + 8 ] , 3mov DWORD PTR [ esp + 4 ] , 2mov DWORD PTR [ esp ] , 1c a l l f u n c t i o n
mov eax , 0leaver e t
f u n c t i o n :
push ebpmov ebp , espsub esp , 16mov BYTE PTR [ ebp1 5] , 97mov eax , 0
leaver e t
Attaque par debordement de buffer Pile 13 octobre 2014 56 / 56
http://find/http://goback/