PIE

Reading time: 3 minutes

tip

Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Ondersteun HackTricks

Basiese Inligting

'n Binêre wat as PIE gecompileer is, of Position Independent Executable, beteken dat die program by verskillende geheue-lokasies kan laai elke keer wanneer dit uitgevoer word, wat hardgecodeerde adresse voorkom.

Die truuk om hierdie binêre te benut, lê in die benutting van die relatiewe adresse—die afstande tussen dele van die program bly dieselfde, selfs al verander die absolute lokasies. Om PIE te omseil, hoef jy net een adres te lek, tipies vanaf die stack deur gebruik te maak van kwesbaarhede soos formaatstring-aanvalle. Sodra jy 'n adres het, kan jy ander bereken deur hul vaste afstande.

'n Nuttige wenk in die benutting van PIE binêre is dat hul basisadres tipies eindig op 000 as gevolg van geheuebladsye wat die eenhede van randomisering is, met 'n grootte van 0x1000 bytes. Hierdie uitlijning kan 'n kritieke kontrole wees as 'n ontploffing nie werk soos verwag nie, wat aandui of die korrekte basisadres geïdentifiseer is.
Of jy kan dit gebruik vir jou ontploffing, as jy lek dat 'n adres geleë is by 0x649e1024 weet jy dat die basisadres 0x649e1000 is en van daar af kan jy net afstande van funksies en lokasies bereken.

Omseilings

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

  • Gedeaktiveerde ASLR: As ASLR gedeaktiveer is, word 'n binêre wat met PIE gecompileer is altyd in dieselfde adres gelaai, daarom sal PIE nutteloos wees aangesien die adresse van die objekte altyd op dieselfde plek sal wees.
  • Wees gegee die lek (algemeen in maklike CTF-uitdagings, kyk hierdie voorbeeld)
  • Brute-force EBP en EIP waardes in die stack totdat jy die korrekte lek:

BF Addresses in the Stack

  • Gebruik 'n arbitraire lees kwesbaarheid soos formaatstring om 'n adres van die binêre te lek (bv. vanaf die stack, soos in die vorige tegniek) om die basis van die binêre te kry en afstande van daar af te gebruik. Vind 'n voorbeeld hier.

Verwysings

tip

Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Ondersteun HackTricks