hacktricks/binary-exploitation/heap/house-of-einherjar.md

4.2 KiB

Maison d'Einherjar

Apprenez le piratage AWS de zéro à héros avec htARTE (Expert de l'équipe rouge HackTricks AWS)!

Autres façons de soutenir HackTricks :

Informations de base

Code

Objectif

  • L'objectif est d'allouer de la mémoire à presque n'importe quelle adresse spécifique.

Exigences

  • Créer un faux chunk lorsque nous voulons allouer un chunk :
  • Définir des pointeurs pour pointer vers lui-même pour contourner les vérifications de cohérence
  • Décalage d'un sur un d'un chunk à un autre pour modifier le prev in use
  • Indiquer dans le prev_size du chunk abusé par décalage d'un la différence entre lui-même et le faux chunk
  • La taille du faux chunk doit également avoir été définie de la même taille pour contourner les vérifications de cohérence
  • Pour construire ces chunks, vous aurez besoin d'une fuite de tas.

Attaque

  • Un faux chunk est créé à l'intérieur d'un chunk contrôlé par l'attaquant pointant avec fd et bk vers le chunk d'origine pour contourner les protections
  • 2 autres chunks (B et C) sont alloués
  • En abusant du décalage d'un dans le B, le bit prev in use est nettoyé et les données prev_size sont écrasées avec la différence entre l'endroit où le chunk C est alloué et le faux chunk A généré précédemment
  • Ce prev_size et la taille dans le faux chunk A doivent être les mêmes pour contourner les vérifications.
  • Ensuite, le tcache est rempli
  • Ensuite, C est libéré pour qu'il se consolide avec le faux chunk A
  • Ensuite, un nouveau chunk D est créé qui commencera dans le faux chunk A et couvrira le chunk B
  • La maison d'Einherjar se termine ici
  • Cela peut être poursuivi avec une attaque de fast bin :
  • Libérer B pour l'ajouter au fast bin
  • Le fd de B est écrasé pour le faire pointer vers l'adresse cible en abusant du chunk D (car il contient B à l'intérieur)
  • Ensuite, 2 mallocs sont effectués et le deuxième va allouer l'adresse cible

Références et autres exemples