Segmentation mémoire et Buffer Overflow

penguin rootCet article est un hommage au cours sur le reverse ingineering et l’exploitation des failles applicatives rédigé en français (oui oui !) par monsieur @Friz_N et mis à la disposition du lecteur sur  Base-Hacking.org  ! Je vous somme de le lire et relire.

Le cours est divisé en plusieurs chapitres qui se consacrent chacun à un mécanisme particulier de cet exaltant sujet. L’auteur s’est inspiré du livre Hacking: The Art of Exploitation de Jon Ericksson que vous n’aurez aucun mal à trouver sur la toile. Et pour vous donner l’eau à la bouche, voici comment est structuré son cours :

  • Tout d’abord, une petite introduction aux exploits applicatifs
  •  Une vue globale de la mémoire, son organisation et son utilisation
  • Les buffer overflows : comment un bug peut permettre de détourner une application
  • Les strings formatées, l’interprétation des chaînes de caractères par un programme

Et puisqu’il est coutume sur 0x0ff.info d’apporter une plus-value au sujet traité, voici ma contribution à cette édifice, une Cheat Sheet sur la segmentation mémoire à imprimer puis à coller non loin de votre ordinateur, une anti-sèche qui j’espère vous aidera à fixer rapidement les connaissances distillées par FrizN.

Memory Segmentation Cheat Sheet

Cette pompe contient sans doute quelques erreurs techniques, et de nombreuses atteintes à la langue officielle de l’île de Bretagne. Si vous découvrez quelques unes de ces coquilles, je vous conjure d’en faire part dans les commentaires de cet article pour que je puisse corriger ça au plus vite !  ;-)

Si vous voulez vous faire une idée sur le rendu une fois imprimée, cliquez ->ICI<- !

Révisions

  1. Version 1 : Version initiale
  2. Version 2 : Modification de la description de la Heap et suppression de la flèche suggérant à tord que la variable nb de la fonction main() était créée dans la Heap.  – Remerciement à Marc Falzon
  3. Version 3 : Précision sur les registres R.X  – Remerciement à Christophe Courtaut
  4. Version 4 (actuelle) : Pushing/Popping en anglais, Registre AX et non AH dans le tableau  – Remerciement à yaap