mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
164 lines
6.6 KiB
Markdown
164 lines
6.6 KiB
Markdown
# Heap Functions Security Checks
|
|
|
|
{{#include ../../../banners/hacktricks-training.md}}
|
|
|
|
## unlink
|
|
|
|
Vir meer inligting, kyk:
|
|
|
|
{{#ref}}
|
|
unlink.md
|
|
{{#endref}}
|
|
|
|
Dit is 'n opsomming van die uitgevoerde kontroles:
|
|
|
|
- Kontroleer of die aangeduide grootte van die stuk dieselfde is as die `prev_size` wat in die volgende stuk aangedui word
|
|
- Foutboodskap: `corrupted size vs. prev_size`
|
|
- Kontroleer ook dat `P->fd->bk == P` en `P->bk->fw == P`
|
|
- Foutboodskap: `corrupted double-linked list`
|
|
- As die stuk nie klein is nie, kontroleer dat `P->fd_nextsize->bk_nextsize == P` en `P->bk_nextsize->fd_nextsize == P`
|
|
- Foutboodskap: `corrupted double-linked list (not small)`
|
|
|
|
## \_int_malloc
|
|
|
|
Vir meer inligting, kyk:
|
|
|
|
{{#ref}}
|
|
malloc-and-sysmalloc.md
|
|
{{#endref}}
|
|
|
|
- **Kontroles tydens vinnige bin soektog:**
|
|
- As die stuk nie uitgelijn is nie:
|
|
- Foutboodskap: `malloc(): unaligned fastbin chunk detected 2`
|
|
- As die vorentoe stuk nie uitgelijn is nie:
|
|
- Foutboodskap: `malloc(): unaligned fastbin chunk detected`
|
|
- As die teruggegee stuk 'n grootte het wat nie korrek is nie weens sy indeks in die vinnige bin:
|
|
- Foutboodskap: `malloc(): memory corruption (fast)`
|
|
- As enige stuk wat gebruik word om die tcache te vul nie uitgelijn is nie:
|
|
- Foutboodskap: `malloc(): unaligned fastbin chunk detected 3`
|
|
- **Kontroles tydens klein bin soektog:**
|
|
- As `victim->bk->fd != victim`:
|
|
- Foutboodskap: `malloc(): smallbin double linked list corrupted`
|
|
- **Kontroles tydens konsolidasie** uitgevoer vir elke vinnige bin stuk:
|
|
- As die stuk nie uitgelijn is nie, aktiveer:
|
|
- Foutboodskap: `malloc_consolidate(): unaligned fastbin chunk detected`
|
|
- As die stuk 'n ander grootte het as die een wat dit behoort te wees weens die indeks waarin dit is:
|
|
- Foutboodskap: `malloc_consolidate(): invalid chunk size`
|
|
- As die vorige stuk nie in gebruik is nie en die vorige stuk 'n grootte het wat verskil van die een aangedui deur prev_chunk:
|
|
- Foutboodskap: `corrupted size vs. prev_size in fastbins`
|
|
- **Kontroles tydens onsortering bin soektog**:
|
|
- As die stuk grootte vreemd is (te klein of te groot):
|
|
- Foutboodskap: `malloc(): invalid size (unsorted)`
|
|
- As die volgende stuk grootte vreemd is (te klein of te groot):
|
|
- Foutboodskap: `malloc(): invalid next size (unsorted)`
|
|
- As die vorige grootte wat deur die volgende stuk aangedui word verskil van die grootte van die stuk:
|
|
- Foutboodskap: `malloc(): mismatching next->prev_size (unsorted)`
|
|
- As nie `victim->bck->fd == victim` of nie `victim->fd == av (arena)` nie:
|
|
- Foutboodskap: `malloc(): unsorted double linked list corrupted`
|
|
- Aangesien ons altyd die laaste een kontroleer, moet dit altyd na die arena struktuur wys.
|
|
- As die volgende stuk nie aandui dat die vorige in gebruik is nie:
|
|
- Foutboodskap: `malloc(): invalid next->prev_inuse (unsorted)`
|
|
- As `fwd->bk_nextsize->fd_nextsize != fwd`:
|
|
- Foutboodskap: `malloc(): largebin double linked list corrupted (nextsize)`
|
|
- As `fwd->bk->fd != fwd`:
|
|
- Foutboodskap: `malloc(): largebin double linked list corrupted (bk)`
|
|
- **Kontroles tydens groot bin (volgens indeks) soektog:**
|
|
- `bck->fd-> bk != bck`:
|
|
- Foutboodskap: `malloc(): corrupted unsorted chunks`
|
|
- **Kontroles tydens groot bin (volgende groter) soektog:**
|
|
- `bck->fd-> bk != bck`:
|
|
- Foutboodskap: `malloc(): corrupted unsorted chunks2`
|
|
- **Kontroles tydens Top stuk gebruik:**
|
|
- `chunksize(av->top) > av->system_mem`:
|
|
- Foutboodskap: `malloc(): corrupted top size`
|
|
|
|
## `tcache_get_n`
|
|
|
|
- **Kontroles in `tcache_get_n`:**
|
|
- As die stuk nie uitgelijn is nie:
|
|
- Foutboodskap: `malloc(): unaligned tcache chunk detected`
|
|
|
|
## `tcache_thread_shutdown`
|
|
|
|
- **Kontroles in `tcache_thread_shutdown`:**
|
|
- As die stuk nie uitgelijn is nie:
|
|
- Foutboodskap: `tcache_thread_shutdown(): unaligned tcache chunk detected`
|
|
|
|
## `__libc_realloc`
|
|
|
|
- **Kontroles in `__libc_realloc`:**
|
|
- As die ou pointer nie uitgelijn is nie of die grootte verkeerd was:
|
|
- Foutboodskap: `realloc(): invalid pointer`
|
|
|
|
## `_int_free`
|
|
|
|
Vir meer inligting, kyk:
|
|
|
|
{{#ref}}
|
|
free.md
|
|
{{#endref}}
|
|
|
|
- **Kontroles tydens die begin van `_int_free`:**
|
|
- Pointer is uitgelijn:
|
|
- Foutboodskap: `free(): invalid pointer`
|
|
- Grootte groter as `MINSIZE` en grootte ook uitgelijn:
|
|
- Foutboodskap: `free(): invalid size`
|
|
- **Kontroles in `_int_free` tcache:**
|
|
- As daar meer inskrywings is as `mp_.tcache_count`:
|
|
- Foutboodskap: `free(): too many chunks detected in tcache`
|
|
- As die inskrywing nie uitgelijn is nie:
|
|
- Foutboodskap: `free(): unaligned chunk detected in tcache 2`
|
|
- As die vrygestelde stuk reeds vrygestel is en teenwoordig is as 'n stuk in die tcache:
|
|
- Foutboodskap: `free(): double free detected in tcache 2`
|
|
- **Kontroles in `_int_free` vinnige bin:**
|
|
- As die grootte van die stuk ongeldig is (te groot of klein) aktiveer:
|
|
- Foutboodskap: `free(): invalid next size (fast)`
|
|
- As die bygevoegde stuk reeds die top van die vinnige bin was:
|
|
- Foutboodskap: `double free or corruption (fasttop)`
|
|
- As die grootte van die stuk aan die top 'n ander grootte het as die stuk wat ons byvoeg:
|
|
- Foutboodskap: `invalid fastbin entry (free)`
|
|
|
|
## **`_int_free_merge_chunk`**
|
|
|
|
- **Kontroles in `_int_free_merge_chunk`:**
|
|
- As die stuk die top stuk is:
|
|
- Foutboodskap: `double free or corruption (top)`
|
|
- As die volgende stuk buite die grense van die arena is:
|
|
- Foutboodskap: `double free or corruption (out)`
|
|
- As die stuk nie gemerk is as gebruik nie (in die prev_inuse van die volgende stuk):
|
|
- Foutboodskap: `double free or corruption (!prev)`
|
|
- As die volgende stuk 'n te klein of te groot grootte het:
|
|
- Foutboodskap: `free(): invalid next size (normal)`
|
|
- As die vorige stuk nie in gebruik is nie, sal dit probeer konsolideer. Maar, as die `prev_size` verskil van die grootte wat in die vorige stuk aangedui word:
|
|
- Foutboodskap: `corrupted size vs. prev_size while consolidating`
|
|
|
|
## **`_int_free_create_chunk`**
|
|
|
|
- **Kontroles in `_int_free_create_chunk`:**
|
|
- Voeg 'n stuk by die onsortering bin, kontroleer of `unsorted_chunks(av)->fd->bk == unsorted_chunks(av)`:
|
|
- Foutboodskap: `free(): corrupted unsorted chunks`
|
|
|
|
## `do_check_malloc_state`
|
|
|
|
- **Kontroles in `do_check_malloc_state`:**
|
|
- As misaligned fast bin stuk:
|
|
- Foutboodskap: `do_check_malloc_state(): unaligned fastbin chunk detected`
|
|
|
|
## `malloc_consolidate`
|
|
|
|
- **Kontroles in `malloc_consolidate`:**
|
|
- As misaligned fast bin stuk:
|
|
- Foutboodskap: `malloc_consolidate(): unaligned fastbin chunk detected`
|
|
- As verkeerde fast bin stuk grootte:
|
|
- Foutboodskap: `malloc_consolidate(): invalid chunk size`
|
|
|
|
## `_int_realloc`
|
|
|
|
- **Kontroles in `_int_realloc`:**
|
|
- Grootte is te groot of te klein:
|
|
- Foutboodskap: `realloc(): invalid old size`
|
|
- Grootte van die volgende stuk is te groot of te klein:
|
|
- Foutboodskap: `realloc(): invalid next size`
|
|
|
|
{{#include ../../../banners/hacktricks-training.md}}
|