mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
10 KiB
10 KiB
Heap Functions Security Checks
{{#include ../../../banners/hacktricks-training.md}}
unlink
Для отримання додаткової інформації перегляньте:
{{#ref}} unlink.md {{#endref}}
Це резюме виконаних перевірок:
- Перевірте, чи вказаний розмір частини такий же, як
prev_size, вказаний у наступній частині - Повідомлення про помилку:
corrupted size vs. prev_size - Також перевірте, що
P->fd->bk == PіP->bk->fw == P - Повідомлення про помилку:
corrupted double-linked list - Якщо частина не мала, перевірте, що
P->fd_nextsize->bk_nextsize == PіP->bk_nextsize->fd_nextsize == P - Повідомлення про помилку:
corrupted double-linked list (not small)
_int_malloc
Для отримання додаткової інформації перегляньте:
{{#ref}} malloc-and-sysmalloc.md {{#endref}}
- Перевірки під час пошуку швидкого бін:
- Якщо частина неправильно вирівняна:
- Повідомлення про помилку:
malloc(): unaligned fastbin chunk detected 2 - Якщо наступна частина неправильно вирівняна:
- Повідомлення про помилку:
malloc(): unaligned fastbin chunk detected - Якщо повернена частина має неправильний розмір через свій індекс у швидкому біні:
- Повідомлення про помилку:
malloc(): memory corruption (fast) - Якщо будь-яка частина, що використовується для заповнення tcache, неправильно вирівняна:
- Повідомлення про помилку:
malloc(): unaligned fastbin chunk detected 3 - Перевірки під час пошуку малого біна:
- Якщо
victim->bk->fd != victim: - Повідомлення про помилку:
malloc(): smallbin double linked list corrupted - Перевірки під час консолідації, виконувані для кожної частини швидкого біна:
- Якщо частина неправильно вирівняна, викликайте:
- Повідомлення про помилку:
malloc_consolidate(): unaligned fastbin chunk detected - Якщо частина має інший розмір, ніж той, який вона повинна мати через індекс, в якому вона знаходиться:
- Повідомлення про помилку:
malloc_consolidate(): invalid chunk size - Якщо попередня частина не використовується, а попередня частина має розмір, відмінний від вказаного в prev_chunk:
- Повідомлення про помилку:
corrupted size vs. prev_size in fastbins - Перевірки під час пошуку неупорядкованого біна:
- Якщо розмір частини дивний (занадто малий або занадто великий):
- Повідомлення про помилку:
malloc(): invalid size (unsorted) - Якщо розмір наступної частини дивний (занадто малий або занадто великий):
- Повідомлення про помилку:
malloc(): invalid next size (unsorted) - Якщо попередній розмір, вказаний наступною частиною, відрізняється від розміру частини:
- Повідомлення про помилку:
malloc(): mismatching next->prev_size (unsorted) - Якщо не
victim->bck->fd == victimабо неvictim->fd == av (arena): - Повідомлення про помилку:
malloc(): unsorted double linked list corrupted - Оскільки ми завжди перевіряємо останню, її fd завжди повинно вказувати на структуру арени.
- Якщо наступна частина не вказує, що попередня використовується:
- Повідомлення про помилку:
malloc(): invalid next->prev_inuse (unsorted) - Якщо
fwd->bk_nextsize->fd_nextsize != fwd: - Повідомлення про помилку:
malloc(): largebin double linked list corrupted (nextsize) - Якщо
fwd->bk->fd != fwd: - Повідомлення про помилку:
malloc(): largebin double linked list corrupted (bk) - Перевірки під час пошуку великого біна (за індексом):
bck->fd-> bk != bck:- Повідомлення про помилку:
malloc(): corrupted unsorted chunks - Перевірки під час пошуку великого біна (наступний більший):
bck->fd-> bk != bck:- Повідомлення про помилку:
malloc(): corrupted unsorted chunks2 - Перевірки під час використання верхньої частини:
chunksize(av->top) > av->system_mem:- Повідомлення про помилку:
malloc(): corrupted top size
tcache_get_n
- Перевірки в
tcache_get_n: - Якщо частина неправильно вирівняна:
- Повідомлення про помилку:
malloc(): unaligned tcache chunk detected
tcache_thread_shutdown
- Перевірки в
tcache_thread_shutdown: - Якщо частина неправильно вирівняна:
- Повідомлення про помилку:
tcache_thread_shutdown(): unaligned tcache chunk detected
__libc_realloc
- Перевірки в
__libc_realloc: - Якщо старий вказівник неправильно вирівняний або розмір був неправильним:
- Повідомлення про помилку:
realloc(): invalid pointer
_int_free
Для отримання додаткової інформації перегляньте:
{{#ref}} free.md {{#endref}}
- Перевірки на початку
_int_free: - Вказівник вирівняний:
- Повідомлення про помилку:
free(): invalid pointer - Розмір більший за
MINSIZEі розмір також вирівняний: - Повідомлення про помилку:
free(): invalid size - Перевірки в
_int_freetcache: - Якщо є більше записів, ніж
mp_.tcache_count: - Повідомлення про помилку:
free(): too many chunks detected in tcache - Якщо запис не вирівняний:
- Повідомлення про помилку:
free(): unaligned chunk detected in tcache 2 - Якщо звільнена частина вже була звільнена і присутня як частина в tcache:
- Повідомлення про помилку:
free(): double free detected in tcache 2 - Перевірки в
_int_freeшвидкому біні: - Якщо розмір частини недійсний (занадто великий або малий), викликайте:
- Повідомлення про помилку:
free(): invalid next size (fast) - Якщо додана частина вже була верхньою частиною швидкого біна:
- Повідомлення про помилку:
double free or corruption (fasttop) - Якщо розмір частини на верху має інший розмір, ніж частина, яку ми додаємо:
- Повідомлення про помилку:
invalid fastbin entry (free)
_int_free_merge_chunk
- Перевірки в
_int_free_merge_chunk: - Якщо частина є верхньою частиною:
- Повідомлення про помилку:
double free or corruption (top) - Якщо наступна частина знаходиться за межами кордонів арени:
- Повідомлення про помилку:
double free or corruption (out) - Якщо частина не позначена як використана (в prev_inuse наступної частини):
- Повідомлення про помилку:
double free or corruption (!prev) - Якщо наступна частина має занадто малий або занадто великий розмір:
- Повідомлення про помилку:
free(): invalid next size (normal) - Якщо попередня частина не використовується, вона спробує консолідувати. Але, якщо
prev_sizeвідрізняється від розміру, вказаного в попередній частині: - Повідомлення про помилку:
corrupted size vs. prev_size while consolidating
_int_free_create_chunk
- Перевірки в
_int_free_create_chunk: - Додавання частини в неупорядкований бін, перевірте, чи
unsorted_chunks(av)->fd->bk == unsorted_chunks(av): - Повідомлення про помилку:
free(): corrupted unsorted chunks
do_check_malloc_state
- Перевірки в
do_check_malloc_state: - Якщо неправильно вирівняна частина швидкого біна:
- Повідомлення про помилку:
do_check_malloc_state(): unaligned fastbin chunk detected
malloc_consolidate
- Перевірки в
malloc_consolidate: - Якщо неправильно вирівняна частина швидкого біна:
- Повідомлення про помилку:
malloc_consolidate(): unaligned fastbin chunk detected - Якщо неправильний розмір частини швидкого біна:
- Повідомлення про помилку:
malloc_consolidate(): invalid chunk size
_int_realloc
- Перевірки в
_int_realloc: - Розмір занадто великий або занадто малий:
- Повідомлення про помилку:
realloc(): invalid old size - Розмір наступної частини занадто великий або занадто малий:
- Повідомлення про помилку:
realloc(): invalid next size
{{#include ../../../banners/hacktricks-training.md}}