PIE

Reading time: 3 minutes

tip

Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE)

Soutenir HackTricks

Informations de base

Un binaire compilĂ© en tant que PIE, ou Position Independent Executable, signifie que le programme peut se charger Ă  diffĂ©rents emplacements mĂ©moire chaque fois qu'il est exĂ©cutĂ©, empĂȘchant les adresses codĂ©es en dur.

Le truc pour exploiter ces binaires rĂ©side dans l'exploitation des adresses relatives—les dĂ©calages entre les parties du programme restent les mĂȘmes mĂȘme si les emplacements absolus changent. Pour contourner PIE, vous devez seulement divulguer une adresse, gĂ©nĂ©ralement depuis la pile en utilisant des vulnĂ©rabilitĂ©s comme les attaques par chaĂźne de format. Une fois que vous avez une adresse, vous pouvez calculer d'autres par leurs dĂ©calages fixes.

Un indice utile pour exploiter les binaires PIE est que leur adresse de base se termine gĂ©nĂ©ralement par 000 en raison des pages mĂ©moire Ă©tant les unitĂ©s de randomisation, de taille 0x1000 octets. Cet alignement peut ĂȘtre un vĂ©rification critique si une exploitation ne fonctionne pas comme prĂ©vu, indiquant si la bonne adresse de base a Ă©tĂ© identifiĂ©e.
Ou vous pouvez utiliser cela pour votre exploitation, si vous divulguez qu'une adresse est située à 0x649e1024 vous savez que l'adresse de base est 0x649e1000 et à partir de là vous pouvez simplement calculer les décalages des fonctions et des emplacements.

Contournements

Pour contourner PIE, il est nécessaire de divulguer une adresse du binaire chargé, il existe plusieurs options pour cela :

  • ASLR dĂ©sactivĂ© : Si ASLR est dĂ©sactivĂ©, un binaire compilĂ© avec PIE est toujours chargĂ© Ă  la mĂȘme adresse, donc PIE va ĂȘtre inutile car les adresses des objets seront toujours au mĂȘme endroit.
  • Être donnĂ© la fuite (commun dans les dĂ©fis CTF faciles, vĂ©rifiez cet exemple)
  • Brute-forcer les valeurs EBP et EIP dans la pile jusqu'Ă  ce que vous divulguiez les bonnes :

BF Addresses in the Stack

  • Utiliser une vulnĂ©rabilitĂ© de lecture arbitraire telle que chaĂźne de format pour divulguer une adresse du binaire (par exemple, depuis la pile, comme dans la technique prĂ©cĂ©dente) pour obtenir la base du binaire et utiliser des dĂ©calages Ă  partir de lĂ . Trouvez un exemple ici.

Références

tip

Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE)

Soutenir HackTricks