Heap Functions Security Checks
Tip
学习和实践 AWS 黑客技术:
HackTricks Training AWS Red Team Expert (ARTE)
学习和实践 GCP 黑客技术:HackTricks Training GCP Red Team Expert (GRTE)
学习和实践 Azure 黑客技术:
HackTricks Training Azure Red Team Expert (AzRTE)
支持 HackTricks
- 查看 订阅计划!
- 加入 💬 Discord 群组 或 Telegram 群组 或 在 Twitter 🐦 上关注我们 @hacktricks_live.
- 通过向 HackTricks 和 HackTricks Cloud GitHub 仓库提交 PR 来分享黑客技巧。
unlink
更多信息请查看:
这是执行检查的摘要:
- 检查块的指示大小是否与下一个块中指示的
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
更多信息请查看:
- 快速 bin 搜索期间的检查:
- 如果块未对齐:
- 错误信息:
malloc(): unaligned fastbin chunk detected 2 - 如果前向块未对齐:
- 错误信息:
malloc(): unaligned fastbin chunk detected - 如果返回的块的大小因其在快速 bin 中的索引而不正确:
- 错误信息:
malloc(): memory corruption (fast) - 如果用于填充 tcache 的任何块未对齐:
- 错误信息:
malloc(): unaligned fastbin chunk detected 3 - 小 bin 搜索期间的检查:
- 如果
victim->bk->fd != victim: - 错误信息:
malloc(): smallbin double linked list corrupted - 合并期间的检查 针对每个快速 bin 块:
- 如果块未对齐触发:
- 错误信息:
malloc_consolidate(): unaligned fastbin chunk detected - 如果块的大小与其所在索引应有的大小不同:
- 错误信息:
malloc_consolidate(): invalid chunk size - 如果前一个块未使用且前一个块的大小与 prev_chunk 指示的大小不同:
- 错误信息:
corrupted size vs. prev_size in fastbins - 无序 bin 搜索期间的检查:
- 如果块大小异常(太小或太大):
- 错误信息:
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 应始终指向 arena 结构。
- 如果下一个块未指示前一个块正在使用:
- 错误信息:
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) - 按索引搜索大 bin 的检查:
bck->fd-> bk != bck:- 错误信息:
malloc(): corrupted unsorted chunks - 按下一个更大搜索大 bin 的检查:
bck->fd-> bk != bck:- 错误信息:
malloc(): corrupted unsorted chunks2 - 在 Top chunk 使用期间的检查:
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
更多信息请查看:
- 在
_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快速 bin 中的检查: - 如果块的大小无效(太大或太小)触发:
- 错误信息:
free(): invalid next size (fast) - 如果添加的块已经是快速 bin 的顶部:
- 错误信息:
double free or corruption (fasttop) - 如果顶部块的大小与我们添加的块的大小不同:
- 错误信息:
invalid fastbin entry (free)
_int_free_merge_chunk
- 在
_int_free_merge_chunk中的检查: - 如果块是顶部块:
- 错误信息:
double free or corruption (top) - 如果下一个块超出 arena 的边界:
- 错误信息:
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中的检查: - 将块添加到无序 bin,检查
unsorted_chunks(av)->fd->bk == unsorted_chunks(av): - 错误信息:
free(): corrupted unsorted chunks
do_check_malloc_state
- 在
do_check_malloc_state中的检查: - 如果未对齐的快速 bin 块:
- 错误信息:
do_check_malloc_state(): unaligned fastbin chunk detected
malloc_consolidate
- 在
malloc_consolidate中的检查: - 如果未对齐的快速 bin 块:
- 错误信息:
malloc_consolidate(): unaligned fastbin chunk detected - 如果快速 bin 块大小不正确:
- 错误信息:
malloc_consolidate(): invalid chunk size
_int_realloc
- 在
_int_realloc中的检查: - 大小太大或太小:
- 错误信息:
realloc(): invalid old size - 下一个块的大小太大或太小:
- 错误信息:
realloc(): invalid next size
Tip
学习和实践 AWS 黑客技术:
HackTricks Training AWS Red Team Expert (ARTE)
学习和实践 GCP 黑客技术:HackTricks Training GCP Red Team Expert (GRTE)
学习和实践 Azure 黑客技术:
HackTricks Training Azure Red Team Expert (AzRTE)
支持 HackTricks
- 查看 订阅计划!
- 加入 💬 Discord 群组 或 Telegram 群组 或 在 Twitter 🐦 上关注我们 @hacktricks_live.
- 通过向 HackTricks 和 HackTricks Cloud GitHub 仓库提交 PR 来分享黑客技巧。
HackTricks

