8
ecurit´ e de bas niveau Appel de fonction et pile : r´ esum´ e Fonction appelante : 1. Empiler les param` etres dans la pile/positionner les param` etres dans des registres 2. Empiler l’adresse de l’instruction de retour 3. Faire un saut vers l’adresse de la fonction Fonction appel´ ee : 4. Empiler l’adresse du pointeur de pile (%ebp) 5. (%ebp) (%esp) 6. Empiler les variables locales Retour ` a la fonction appelante : 7. einitialiser le pointeur de pile et le pointeur de sommet de pile 8. Faire un saut vers l’instruction de retour

Développement d'applications sécurisées [Partie 2]

Embed Size (px)

Citation preview

Page 1: Développement d'applications sécurisées [Partie 2]

Securite de bas niveauAppel de fonction et pile : resume

Fonction appelante :

1. Empiler les parametres dans la pile/positionner les parametresdans des registres

2. Empiler l’adresse de l’instruction de retour

3. Faire un saut vers l’adresse de la fonction

Fonction appelee :

4. Empiler l’adresse du pointeur de pile (%ebp)

5. (%ebp) ← (%esp)

6. Empiler les variables locales

Retour a la fonction appelante :

7. Reinitialiser le pointeur de pile et le pointeur de sommet depile

8. Faire un saut vers l’instruction de retour

Page 2: Développement d'applications sécurisées [Partie 2]

Securite de bas niveauAppel de fonction et pile : resume (Cont.)

Page 3: Développement d'applications sécurisées [Partie 2]

Securite de bas niveauBuffer Overflow

I Buffer : Espace memoire contigu associe a une variable ou aun champ

I Overflow : Ecrire dans le buffer plus de donnees qu’il ne peutsupporter

Page 4: Développement d'applications sécurisées [Partie 2]

Securite de bas niveauBuffer Overflow : Exemple 1

Page 5: Développement d'applications sécurisées [Partie 2]

Securite de bas niveauBuffer Overflow : Exemple 2

Page 6: Développement d'applications sécurisées [Partie 2]

Securite de bas niveauInjection de code

I Il existe deux difficultees pour injecter un codeI Utiliser le programme pour charger un code dans la memoire

I Charger la permiere instruction du code dans le registred’instruction

Page 7: Développement d'applications sécurisées [Partie 2]

Securite de bas niveauInjection de code (Cont.)

Caracteristiques de code :

I Ecrit en langage machine

I Ne contient pas des caracteres NULL

I N’utilise pas un chargeur (Loader)

I shellcode : Permet d’avoir un interpreteur de commandes

Page 8: Développement d'applications sécurisées [Partie 2]

Securite de bas niveauInjection de code (Cont.)

Exemple de shellcode