hacktricks/binary-exploitation/common-binary-protections-and-bypasses/pie/README.md

4.6 KiB

PIE

{% hint style="success" %} Naučite i vežbajte hakovanje AWS-a:HackTricks Obuka AWS Crveni Tim Stručnjak (ARTE)
Naučite i vežbajte hakovanje GCP-a: HackTricks Obuka GCP Crveni Tim Stručnjak (GRTE)

Pomozite HackTricks
{% endhint %}

Osnovne informacije

Binarni fajl kompajliran kao PIE, ili Izvršivi fajl sa nezavisnim položajem, znači da se program može učitati na različitim memorijskim lokacijama svaki put kada se izvrši, sprečavajući tvrdo kodirane 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. 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 stranice memorije jedinice randomizacije, veličine 0x1000 bajtova. Ovaj poravnanje može biti ključno za proveru da li eksploit radi kako se očekuje, ukazujući da li je identifikovana tačna bazna adresa.
Ili možete koristiti ovo za svoj 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.

Zaobiđi

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

{% hint style="success" %} Naučite i vežbajte hakovanje AWS-a:HackTricks Obuka AWS Crveni Tim Stručnjak (ARTE)
Naučite i vežbajte hakovanje GCP-a: HackTricks Obuka GCP Crveni Tim Stručnjak (GRTE)

Pomozite HackTricks
{% endhint %}