House of Einherjar
Basiese Inligting
Kode
Kontroleer die voorbeeld van https://github.com/shellphish/how2heap/blob/master/glibc_2.35/house_of_einherjar.c
Of dié van https://guyinatuxedo.github.io/42-house_of_einherjar/house_einherjar_exp/index.html#house-of-einherjar-explanation (jy mag die tcache moet vul)
Doel
Die doel is om geheue by amper enige spesifieke adres toe te ken.
Vereistes
Skep 'n vals stuk wanneer ons 'n stuk wil toeken:
Stel aanwysers in om na homself te wys om sinnigheidskontroles te omseil
Een-byte oorvloei met 'n nulbyte van een stuk na die volgende om die
PREV_INUSE
-vlag te wysig.Dui in die
prev_size
van die off-by-null misbruikte stuk die verskil tussen homself en die vals stuk aanDie grootte van die vals stuk moet ook dieselfde grootte wees om sinnigheidskontroles te omseil
Vir die konstruksie van hierdie stukke, sal jy 'n hoop lek nodig hê.
Aanval
n Vals stuk word binne 'n stuk wat deur die aanvaller beheer word, geskep wat met
fden
bk` na die oorspronklike stuk wys om beskerming te omseil2 ander stukke (
B
enC
) word toegewysDeur die off by one in die
B
een te misbruik, word dieprev in use
-bit skoongemaak en dieprev_size
-data word oorskryf met die verskil tussen die plek waar dieC
-stuk toegewys is, na die valsA
-stuk wat voorheen gegenereer isHierdie
prev_size
en die grootte in die vals stukA
moet dieselfde wees om kontroles te omseil.Dan word die tcache gevul
Dan word
C
vrygestel sodat dit konsolideer met die vals stukA
Dan word 'n nuwe stuk
D
geskep wat in die valsA
-stuk begin en dieB
-stuk dekDie huis van Einherjar eindig hier
Dit kan voortgesit word met 'n vinnige bin-aanval of Tcache-vergiftiging:
Stel
B
vry om dit by die vinnige bin / Tcache te voegB
sefd
word oorskryf sodat dit na die teikenadres wys deur dieD
-stuk te misbruik (omdat ditB
binne bevat)Dan word 2 mallocs gedoen en die tweede een gaan die teikenadres toeken
Verwysings en ander voorbeelde
Nadat aanwysers vrygestel word, word hulle nie genullifiseer nie, dus is dit steeds moontlik om by hulle data te kom. Daarom word 'n stuk in die ongesorteerde bin geplaas en die aanwysers wat dit bevat, gelek (libc-lek) en dan word 'n nuwe hoop op die ongesorteerde bin geplaas en word 'n hoopadres gelek van die aanwyser wat dit kry.
Nul-byte oorvloei-fout in
strtok
.Gebruik Huis van Einherjar om 'n situasie van oorvleuelende stukke te kry en eindig met Tcache-vergiftiging om 'n arbitrêre skryfprimitief te kry.
Last updated