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

PIE

Leer AWS-hacking vanaf nul tot held met htARTE (HackTricks AWS Red Team Expert)!

Ander maniere om HackTricks te ondersteun:

Basiese Inligting

'n Binêre saamgestel as PIE, of Position Independent Executable, beteken die program kan by verskillende geheueplekke gelaai word elke keer as dit uitgevoer word, wat hardcoded adresse voorkom.

Die truuk om hierdie binêre lêers te benut, lê daarin om die relatiewe adresse te benut—die verskille tussen dele van die program bly dieselfde selfs al verander die absolute plekke. Om PIE te omseil, hoef jy net een adres te lek, tipies van die stapel deur kwesbaarhede soos formaatstringaanvalle te gebruik. Sodra jy 'n adres het, kan jy ander bereken deur hul vaste verskuiwings.

'n Nuttige wenk in die benutting van PIE-binêre lêers is dat hul basisadres tipies eindig op 000 as gevolg van geheuebladsye wat die eenhede van randomisasie is, met 'n grootte van 0x1000 byte. Hierdie belyning kan 'n kritiese toets wees as 'n uitbuiting nie werk soos verwag nie, wat aandui of die korrekte basisadres geïdentifiseer is.
Of jy kan dit vir jou uitbuiting gebruik, as jy lek dat 'n adres geleë is op 0x649e1024 weet jy dat die basisadres 0x649e1000 is en van daar af kan jy net verskuiwings bereken van funksies en plekke.

Omseilings

Om PIE te omseil is dit nodig om 'n adres van die gelaai binêre lêer te lek, daar is 'n paar opsies hiervoor:

  • ASLR gedeaktiveer: As ASLR gedeaktiveer is, word 'n binêre saamgestel met PIE altyd gelaai by dieselfde adres, daarom is PIE nutteloos aangesien die adresse van die voorwerpe altyd op dieselfde plek gaan wees.
  • Kry gegee die lek (gewoonlik in maklike CTF-uitdagings, kyk na hierdie voorbeeld)
  • Brute-force EBP en EIP-waardes in die stapel totdat jy die regte een lek:

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

  • Gebruik 'n arbitrêre lees kwesbaarheid soos formaatstring om 'n adres van die binêre lêer te lek (bv. van die stapel, soos in die vorige tegniek) om die basis van die binêre te kry en verskuiwings van daar te gebruik. Vind 'n voorbeeld hier.

Verwysings

Leer AWS-hacking vanaf nul tot held met htARTE (HackTricks AWS Red Team Expert)!

Ander maniere om HackTricks te ondersteun: