PIE
Reading time: 3 minutes
tip
Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.
Osnovne informacije
Binarni fajl kompajliran kao PIE, ili Position Independent Executable, znači da se program može učitati na različitim memorijskim lokacijama svaki put kada se izvrši, sprečavajući hardkodirane adrese.
Trik za iskorišćavanje ovih binarnih fajlova leži u iskorišćavanju relativnih adresa—ofseti između delova programa ostaju isti čak i ako se apsolutne lokacije menjaju. Da biste obišli PIE, potrebno je da iscuri jedna adresa, obično sa stack-a koristeći ranjivosti poput napada format string. Kada dobijete adresu, možete izračunati druge prema njihovim fiksnim ofsetima.
Koristan savet u iskorišćavanju PIE binarnih fajlova je da njihova osnovna adresa obično završava sa 000 zbog toga što su memorijske stranice jedinice randomizacije, veličine 0x1000 bajtova. Ova usklađenost može biti kritična provera ako eksploatacija ne funkcioniše kako se očekuje, ukazujući na to da li je pravilna osnovna adresa identifikovana.
Ili možete ovo koristiti za vašu eksploataciju, ako iscuri da se adresa nalazi na 0x649e1024
znate da je osnovna adresa 0x649e1000
i odatle možete samo izračunati ofsete funkcija i lokacija.
Obilaženja
Da biste obišli PIE potrebno je iscuriti neku adresu učitanog binarnog fajla, postoje neke opcije za to:
- Onemogućen ASLR: Ako je ASLR onemogućen, binarni fajl kompajliran sa PIE se uvek učitava na istoj adresi, stoga je PIE beskoristan jer su adrese objekata uvek na istom mestu.
- Da vam bude data curenje (uobičajeno u lakim CTF izazovima, proverite ovaj primer)
- Brute-force EBP i EIP vrednosti na stack-u dok ne iscurite prave:
- Koristite arbitrarno čitanje ranjivost kao što je format string da iscurite adresu binarnog fajla (npr. sa stack-a, kao u prethodnoj tehnici) da dobijete osnovu binarnog fajla i koristite ofsete odatle. Pronađite primer ovde.
Reference
tip
Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.