Translated ['binary-exploitation/libc-heap/double-free.md'] to af

This commit is contained in:
Translator 2024-08-13 18:55:42 +00:00
parent 54edfad2ce
commit 5bfc31b60f

View file

@ -1,25 +1,25 @@
# Dubbele Vrylating
# Dubbele Vry
{% hint style="success" %}
Leer & oefen AWS-hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP-hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
Leer & oefen AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Ondersteun HackTricks</summary>
* Controleer die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* Kyk na die [**subskripsie planne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord groep**](https://discord.gg/hRep4RUj7f) of die [**telegram groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hacking truuks deur PRs in te dien na die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
## Basiese Inligting
As jy 'n blok geheue meer as een keer vrylating, kan dit die toewysers se data deurmekaar maak en die deur oopmaak vir aanvalle. Hier is hoe dit gebeur: wanneer jy 'n blok geheue vrylaat, gaan dit terug na 'n lys van vry blokkies (bv. die "vinnige bin"). As jy dieselfde blok twee keer agtermekaar vrylaat, detecteer die toewyser dit en gooi 'n fout. Maar as jy **'n ander blokkie vrylaat tussenin, word die dubbele-vrylating toets omseil**, wat korrupsie veroorsaak.
As jy 'n blok geheue meer as een keer vrylaat, kan dit die toewysersdata verwar en die deur oopmaak vir aanvalle. Hier is hoe dit gebeur: wanneer jy 'n blok geheue vrylaat, gaan dit terug in 'n lys van vrye stukke (bv. die "vinnige bin"). As jy dieselfde blok twee keer agtereenvolgens vrylaat, detecteer die toewysers dit en gooi 'n fout. Maar as jy **'n ander stuk tussenin vrylaat, word die dubbele-vry kontrole omseil**, wat korrupsie veroorsaak.
Nou, wanneer jy nuwe geheue vra (deur `malloc` te gebruik), kan die toewyser jou 'n **blok gee wat twee keer vrygelaat is**. Dit kan lei tot twee verskillende aanwysers wat na dieselfde geheueplek wys. As 'n aanvaller een van daardie aanwysers beheer, kan hulle die inhoud van daardie geheue verander, wat sekuriteitsprobleme kan veroorsaak of selfs hulle in staat stel om kode uit te voer.
Nou, wanneer jy nuwe geheue vra (met `malloc`), kan die toewysers jou 'n **blok gee wat twee keer vrygelaat is**. Dit kan lei tot twee verskillende punters wat na dieselfde geheue ligging wys. As 'n aanvaller een van daardie punters beheer, kan hulle die inhoud van daardie geheue verander, wat sekuriteitsprobleme kan veroorsaak of selfs toelaat dat hulle kode uitvoer.
Voorbeeld:
```c
@ -88,16 +88,16 @@ printf("f1: %p\n", (void *)f1);
printf("g1: %p\n", (void *)g1);
printf("h1: %p\n", (void *)h1);
printf("i1: %p\n", (void *)i1);
printf("i2: %p\n", (void *)i1);
printf("i2: %p\n", (void *)i2);
return 0;
}
```
In hierdie voorbeeld, nadat die tcache met verskeie vrygemaakte blokke (7) gevul is, **vry die kode blok `h`, dan blok `i`, en dan weer `h`, wat 'n dubbele vrygawe veroorsaak** (ook bekend as 'n Fast Bin dup). Dit maak die moontlikheid oop om oorvleulende geheue-adresse te ontvang wanneer herverdeling plaasvind, wat beteken dat twee of meer aanwysers na dieselfde geheue-plek kan wys. Die manipulasie van data deur een aanwyser kan dan die ander beïnvloed, wat 'n kritieke veiligheidsrisiko en potensiaal vir uitbuiting skep.
In hierdie voorbeeld, nadat die tcache met verskeie vrygestelde stukke (7) gevul is, **vry die stuk `h`, dan die stuk `i`, en dan weer `h`, wat 'n dubbele vrystelling veroorsaak** (ook bekend as Fast Bin dup). Dit open die moontlikheid om oorvleuelende geheue adresse te ontvang wanneer herallokasie plaasvind, wat beteken dat twee of meer wysers na dieselfde geheue ligging kan wys. Deur data deur een wysers te manipuleer, kan dit dan die ander beïnvloed, wat 'n kritieke sekuriteitsrisiko en potensiaal vir uitbuiting skep.
By die uitvoering daarvan, let op hoe **`i1` en `i2` dieselfde adres gekry het**:
Voer dit uit, let op hoe **`i1` en `i2` dieselfde adres ontvang**:
<pre><code>Aanvanklike toekenning:
<pre><code>Begin toewysings:
a: 0xaaab0f0c22a0
b: 0xaaab0f0c22c0
c: 0xaaab0f0c22e0
@ -107,7 +107,7 @@ f: 0xaaab0f0c2340
g: 0xaaab0f0c2360
h: 0xaaab0f0c2380
i: 0xaaab0f0c23a0
Na herverdelings:
Na herallokasies:
a1: 0xaaab0f0c2360
b1: 0xaaab0f0c2340
c1: 0xaaab0f0c2320
@ -123,34 +123,34 @@ h1: 0xaaab0f0c2380
## Voorbeelde
* [**Dragon Army. Hack The Box**](https://7rocky.github.io/en/ctf/htb-challenges/pwn/dragon-army/)
* Ons kan slegs Fast-Bin-grootte blokke toeken behalwe vir grootte `0x70`, wat die gewone `__malloc_hook` oorskrywing voorkom.
* In plaas daarvan gebruik ons PIE-adresse wat met `0x56` begin as 'n teiken vir Fast Bin dup (1/2 kans).
* Een plek waar PIE-adresse gestoor word, is in `main_arena`, wat binne Glibc is en naby `__malloc_hook` is.
* Ons teiken 'n spesifieke offset van `main_arena` om 'n blok daar toe te ken en voort te gaan om blokke toe te ken totdat ons `__malloc_hook` bereik om kode-uitvoering te kry.
* Ons kan slegs Fast-Bin-grootte stukke toewys, behalwe vir grootte `0x70`, wat die gewone `__malloc_hook` oorskryding voorkom.
* In plaas daarvan, gebruik ons PIE adresse wat met `0x56` begin as 'n teiken vir Fast Bin dup (1/2 kans).
* Een plek waar PIE adresse gestoor word, is in `main_arena`, wat binne Glibc is en naby `__malloc_hook`
* Ons teiken 'n spesifieke offset van `main_arena` om 'n stuk daar toe te wys en voort te gaan om stukke toe te wys totdat ons `__malloc_hook` bereik om kode-uitvoering te verkry.
* [**zero_to_hero. PicoCTF**](https://7rocky.github.io/en/ctf/picoctf/binary-exploitation/zero_to_hero/)
* Deur gebruik te maak van Tcache-blokke en 'n nul-byte oorvloei, kan ons 'n dubbele-vry situasie bereik:
* Ons ken drie blokke van grootte `0x110` toe (`A`, `B`, `C`)
* Deur Tcache-bins en 'n null-byte oorgang te gebruik, kan ons 'n dubbele-vrystelling situasie bereik:
* Ons wys drie stukke van grootte `0x110` (`A`, `B`, `C`)
* Ons vry `B`
* Ons vry `A` en ken weer toe om die nul-byte oorvloei te gebruik
* Nou is `B` se grootteveld `0x100`, in plaas van `0x111`, sodat ons dit weer kan vrymaak
* Ons het een Tcache-blok van grootte `0x110` en een van grootte `0x100` wat na dieselfde adres wys. Dus het ons 'n dubbele vrygawe.
* Ons maak gebruik van die dubbele vrygawe deur [Tcache-vergiftiging](tcache-bin-attack.md) te gebruik
* Ons vry `A` en wys weer om die null-byte oorgang te gebruik
* Nou is `B` se grootte veld `0x100`, in plaas van `0x111`, so ons kan dit weer vry.
* Ons het een Tcache-bin van grootte `0x110` en een van grootte `0x100` wat na dieselfde adres wys. So ons het 'n dubbele vrystelling.
* Ons benut die dubbele vrystelling deur [Tcache vergiftiging](tcache-bin-attack.md)
## Verwysings
* [https://heap-exploitation.dhavalkapil.com/attacks/double\_free](https://heap-exploitation.dhavalkapil.com/attacks/double\_free)
{% hint style="success" %}
Leer & oefen AWS Hack:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Opleiding AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP Hack: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Opleiding GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
Leer & oefen AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Leer & oefen GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Ondersteun HackTricks</summary>
* Kontroleer die [**inskrywingsplanne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hack-truuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
* Kyk na die [**subskripsie planne**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord groep**](https://discord.gg/hRep4RUj7f) of die [**telegram groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hacking truuks deur PRs in te dien na die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}