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
- VĂ©rifiez les plans d'abonnement !
- Rejoignez le đŹ groupe Discord ou le groupe telegram ou suivez nous sur Twitter đŠ @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PRs au HackTricks et HackTricks Cloud dépÎts github.
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 :
- 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
- VĂ©rifiez les plans d'abonnement !
- Rejoignez le đŹ groupe Discord ou le groupe telegram ou suivez nous sur Twitter đŠ @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PRs au HackTricks et HackTricks Cloud dépÎts github.