Explication
- Le programme peut dans certains cas interprété des données de type X comme étant de type Y
- Mauvaise interprétation des données stockées en mémoire
- Des valeurs contrôlées par l'utilisateur peuvent être inteprétées comme des pointeurs.
- Pointeur de données
- Pointeur de fonction
Explication
- Confusion de type C++
- Structure d'un objet
- size_t* vtable (4 bytes ou 8 bytes)
- ... variable local de l'objet
- Structure d'une vtable
- size_t* fct1
- size_t* fct2
- ...
- La vtable est utilisée pour tous les appels dit "virtual" (polymorphisme).
Explication
- Confusion de type C++
- Si la confusion de type nous permet de contrôle le pointeur de vtable, on peut détourner les appels de fonction ailleurs.
- Pour ce faire on peut faire pointer la vtable sur
- Une table existant d'un autre objet
- Un espace mémoire qui contient des pointeur de fonction (GOT)
- Une zone mémoire que l'on contrôle.
Made with Slides.com