hacktricks/binary-exploitation/heap/heap-functions-security-checks.md

5.1 KiB
Raw Permalink Blame History

堆函数安全检查

从零开始学习AWS黑客技术成为专家 htARTEHackTricks AWS红队专家

支持HackTricks的其他方式

此函数从双向链表中移除一个块。常见检查确保在取消链接块时保持链接列表结构一致。

  • 一致性检查
  • 检查 P->fd->bk == PP->bk->fd == P
  • 错误消息:corrupted double-linked list

_int_malloc

此函数负责从堆中分配内存。这里的检查确保在分配期间内存不会损坏。

  • Fastbin大小检查
  • 从fastbin中移除块时确保块的大小在fastbin范围内。
  • 错误消息:malloc(): memory corruption (fast)
  • Smallbin一致性检查
  • 从smallbin中移除块时确保双向链表中的前一个和后一个链接是一致的。
  • 错误消息:malloc(): smallbin double linked list corrupted
  • Unsorted Bin内存范围检查
  • 确保未排序bin中块的大小在最小和最大限制内。
  • 错误消息:malloc(): memory corruption | malloc(): invalid next size (unsorted)
  • 未排序Bin一致性检查第一种情况
  • 在将剩余块插入未排序bin时检查 unsorted_chunks(av)->fd->bk == unsorted_chunks(av)
  • 错误消息:malloc(): corrupted unsorted chunks
  • 未排序Bin一致性检查第二种情况
  • 与前一个检查相同,但在拆分快速或小块后插入时触发。
  • 错误消息:malloc(): corrupted unsorted chunks 2

_int_free

此函数释放先前分配的内存。这里的检查有助于确保适当的内存释放并防止内存损坏。

  • 指针边界检查
  • 确保被释放的指针没有环绕内存。
  • 错误消息:free(): invalid pointer
  • 大小检查
  • 确保被释放的块的大小至少为 MINSIZEMALLOC_ALIGNMENT 的倍数。
  • 错误消息:free(): invalid size
  • Fastbin大小检查
  • 对于fastbin块确保下一个块的大小在最小和最大限制内。
  • 错误消息:free(): invalid next size (fast)
  • Fastbin双重释放检查
  • 在将块插入fastbin时确保头部的块与要插入的块不同。
  • 错误消息:double free or corruption (fasttop)
  • Fastbin一致性检查
  • 在插入到fastbin时确保头部块和要插入的块的大小相同。
  • 错误消息:invalid fastbin entry (free)
  • 顶部块一致性检查
  • 对于非fastbin块确保块与顶部块不同。
  • 错误消息:double free or corruption (top)
  • 内存边界检查
  • 确保内存旁边的下一个块在arena的边界内。
  • 错误消息:double free or corruption (out)
  • Prev_inuse位检查
  • 确保下一个块中的前一个使用位被标记。
  • 错误消息:double free or corruption (!prev)
  • 正常大小检查
  • 确保下一个块的大小在有效范围内。
  • 错误消息:free(): invalid next size (normal)
  • 未排序Bin一致性检查
  • 在将合并的块插入未排序bin时检查 unsorted_chunks(av)->fd->bk == unsorted_chunks(av)
  • 错误消息:free(): corrupted unsorted chunks
从零开始学习AWS黑客技术成为专家 htARTEHackTricks AWS红队专家

支持HackTricks的其他方式