5.2 KiB
WWW2Exec - .dtors & .fini_array
Leer AWS-hacking vanaf nul tot held met htARTE (HackTricks AWS Red Team Expert)!
Ander maniere om HackTricks te ondersteun:
- As jy wil sien dat jou maatskappy geadverteer word in HackTricks of HackTricks aflaai in PDF-formaat Kontroleer die INSKRYWINGSPLANNE!
- Kry die amptelike PEASS & HackTricks swag
- Ontdek Die PEASS Familie, ons versameling van eksklusiewe NFT's
- Sluit aan by die 💬 Discord-groep of die telegram-groep of volg ons op Twitter 🐦 @hacktricks_live.
- Deel jou haktruuks deur PR's in te dien by die HackTricks en HackTricks Cloud github-opslag.
.dtors
{% hint style="danger" %} Teenwoordig is dit baie vreemd om 'n bineêre lêer met 'n .dtors-seksie te vind. {% endhint %}
Die destruktore is funksies wat uitgevoer word voordat die program eindig (nadat die main
-funksie terugkeer).
Die adresse van hierdie funksies word binne die .dtors
-afdeling van die bineêre lêer gestoor en daarom, as jy daarin slaag om die adres van 'n shellcode in __DTOR_END__
te skryf, sal dit uitgevoer word voordat die programme eindig.
Kry die adres van hierdie afdeling met:
objdump -s -j .dtors /exec
rabin -s /exec | grep “__DTOR”
Gewoonlik sal jy die DTOR merkers tussen die waardes ffffffff
en 00000000
vind. So as jy net daardie waardes sien, beteken dit dat daar geen funksie geregistreer is nie. Oorskryf dus die 00000000
met die adres van die shellcode om dit uit te voer.
{% hint style="warning" %} Natuurlik moet jy eers 'n plek vind om die shellcode te stoor sodat jy dit later kan aanroep. {% endhint %}
.fini_array
Essensieel is dit 'n struktuur met funksies wat geroep sal word voordat die program eindig, soos .dtors
. Dit is interessant as jy jou shellcode kan roep deur net na 'n adres te spring, of in gevalle waar jy terug moet gaan na main
om die kwesbaarheid 'n tweede keer te uitbuit.
objdump -s -j .fini_array ./greeting
./greeting: file format elf32-i386
Contents of section .fini_array:
8049934 a0850408
#Put your address in 0x8049934
Merk op dat wanneer 'n funksie van die .fini_array
uitgevoer word, beweeg dit na die volgende een, sodat dit nie verskeie kere uitgevoer word (om ewige lusse te voorkom nie), maar dit sal jou ook net 1 uitvoering van die funksie hier gee.
Merk op dat inskrywings in .fini_array
in omgekeerde volgorde genoem word, so jy wil waarskynlik begin skryf van die laaste een af.
Ewige lus
Om .fini_array
te misbruik om 'n ewige lus te kry, kan jy kyk wat hier gedoen is: As jy ten minste 2 inskrywings in .fini_array
het, kan jy:
- Gebruik jou eerste skryf om weer die kwesbare willekeurige skryffunksie te roep
- Bereken dan die terugkeeradres in die stapel wat deur
__libc_csu_fini
gestoor word (die funksie wat al die.fini_array
-funksies aanroep) en sit daar die adres van__libc_csu_fini
- Dit sal maak dat
__libc_csu_fini
homself weer roep deur die.fini_array
-funksies weer uit te voer wat die kwesbare WWW-funksie 2 keer sal roep: een vir willekeurige skryf en nog een om weer die terugkeeradres van__libc_csu_fini
op die stapel te oorskryf om homself weer te roep.
{% hint style="danger" %}
Merk op dat met Vol Relro, die afdeling .fini_array
leesbaar gemaak word.
{% endhint %}
Leer AWS-hacking vanaf nul tot held met htARTE (HackTricks AWS Red Team Expert)!
Ander maniere om HackTricks te ondersteun:
- As jy wil sien dat jou maatskappy geadverteer word in HackTricks of HackTricks aflaai in PDF-formaat Kyk na die INSKRYWINGSPLANNE!
- Kry die amptelike PEASS & HackTricks swag
- Ontdek Die PEASS-familie, ons versameling eksklusiewe NFT's
- Sluit aan by die 💬 Discord-groep of die telegram-groep of volg ons op Twitter 🐦 @hacktricks_live.
- Deel jou haktruuks deur PR's in te dien by die HackTricks en HackTricks Cloud github-opslag.