본문 바로가기
시스템 해킹/HEAP

malloc free 실습 fastbin unsortbin 정리!

by sonysame 2018. 2. 16.


Bin1: Unsorted bin FIFO

Bin2~Bin63: Small bin <512바이트 Double Linked List FIFO

Bin64~Bin126: Large bin >=512바이트 : 특정 bin에 존재하는 chunk들의 사이즈가 다름! Double Linked List



fastbin: bins for size<=0x64 음...0x40같기도 하고.....

fastbin은 크기가 같은 것끼리!

bin이 10개라는데...7개같기도 하고...

LIFO로 작동! Single Linked List (fd는 있는데, bk는 없음!)

스피드가 매우 빨라!

인접한것이 와도 병합되지 않아!


나머지는 일단 free되면 unsortbin으로 들어가! unsortbin은 FIFO! 인접한것이 오면 병합!


When malloc, checks unsorted bin for same size chunks. If chunk is not the same size, put into corresponding bin!

그렇담 방금 캡처 된 상황에서 malloc(100)을 하면 어떻게 되는지 살펴보자!




5개가 모두 smallbin에 들어간다! size가 0x108인게 없으므로! 


만약 malloc(0xc8)을 하면

0xd0인게 있으므로!

검색을 거치지 않고! 바로 0x804b078이 할당된다!(unsortbin은 FIFO) 그러므로 smallbin에 들어간것도 없다!




When 2 chunks are next to each other and freed, they are coalesced (Fastbins are excluded)

The latter chunk is unlinked from the list!

'시스템 해킹 > HEAP' 카테고리의 다른 글

Heap Overflow  (0) 2018.02.17
Use After Free  (0) 2018.02.16
Fast bin  (0) 2018.02.16
Top Chunk  (0) 2018.02.16
Unsorted bin  (0) 2018.02.16