hacktricks/binary-exploitation/common-binary-protections-and-bypasses/pie
2024-04-07 04:42:46 +00:00
..
bypassing-canary-and-pie.md Translated ['README.md', 'binary-exploitation/arbitrary-write-2-exec/aw2 2024-04-07 04:42:46 +00:00
README.md Translated ['README.md', 'binary-exploitation/arbitrary-write-2-exec/aw2 2024-04-07 04:42:46 +00:00

PIE

Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

Drugi načini podrške HackTricks-u:

Osnovne informacije

Binarni fajl kompajliran kao PIE, ili Position Independent Executable, znači da se program može učitati na različite memorijske lokacije svaki put kada se izvrši, sprečavajući hardkodirane adrese.

Trik za eksploataciju ovih binarnih fajlova leži u eksploatisanju relativnih adresa—offseti između delova programa ostaju isti čak i ako se apsolutne lokacije promene. Da biste zaobišli PIE, potrebno je samo procuriti jednu adresu, obično sa steka koristeći ranjivosti poput napada format string-om. Kada imate jednu adresu, možete izračunati ostale pomoću njihovih fiksnih offseta.

Korisna napomena u eksploatisanju PIE binarnih fajlova je da njihova bazna adresa obično završava sa 000 zbog toga što su memorijske stranice jedinice randomizacije, veličine 0x1000 bajtova. Ovaj poravnanje može biti ključna provera ako eksploit ne radi kako se očekuje, ukazujući da li je identifikovana tačna bazna adresa.
Ili možete koristiti ovo za vaš eksploit, ako procurite da se adresa nalazi na 0x649e1024 znate da je bazna adresa 0x649e1000 i odande možete jednostavno izračunati offsete funkcija i lokacija.

Zaobilazi

Da biste zaobišli PIE potrebno je procureti neku adresu učitanog binarnog fajla, postoje neke opcije za to:

  • Onemogućen ASLR: Ako je ASLR onemogućen, binarni fajl kompajliran sa PIE će uvek biti učitan na istu adresu, stoga će PIE biti beskoristan jer će adrese objekata uvek biti na istom mestu.
  • Biti dat procurak (često u lakim CTF izazovima, proverite ovaj primer)
  • Brute-force vrednosti EBP i EIP na steku dok ne procurite tačne:

{% content-ref url="bypassing-canary-and-pie.md" %} bypassing-canary-and-pie.md {% endcontent-ref %}

  • Koristite ranjivost proizvoljnog čitanja kao što je format string da procurite adresu binarnog fajla (npr. sa steka, kao u prethodnoj tehnici) da biste dobili bazu binarnog fajla i koristili offsete odande. Pronađite primer ovde.

Reference

Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

Drugi načini podrške HackTricks-u: