Studying Security

[Heap Exploit] Overlapping chunks 본문

개념 정리/Heap

[Heap Exploit] Overlapping chunks

J4guar 2022. 5. 2. 13:50
728x90
반응형

Overlapping chunks란?

  • free chunk의 size 값을 변경하여 해당 free chunk가 원래 크기보다 더 큰 메모리를 할당받도록해 기존 chunk의 공간을 덮어쓰는 기법입니다.
  • Unsorted list에 chunk가 배치되어 있고 해당 chunk가 요청된 크기를 할당하기에 충분하다면, 해당 chunk를 재할당합니다.
    • 만약 요청된 메모리의 크기가 해당 chunk의 크기보다 작다면, 해당 chunk에서 요청된 크기만 큼 메모리를 할당하고 남은 메모리 공간은 arena에 반환합니다.
    • 메모리를 분할하고 남은 크기가 매우 작을 경우에는 메모리를 분할하지 않고 chunk를 재할당합니다.
  • 주의점 
    • Free chunk의 "size"에 저장되는 값 다음 free chunk의 "mchunkptr" 이거나, Top chunk여야 합니다.

 

Overlapping chunks flow(Top chunk)

  • 예를 들어 다음과 같이 3개의 chunk를 할당받고 중간에 있는 chunk를 해제합니다.
    • Free chunk의 "size"에 저장된 값은 0x111인데, 이 값을 0x1a1으로 변경합니다.
    • 할당자는 free chunk의 크기가 0x1a1이라고 판단합니다.
      • 그리고 다음 chunk의 위치는 Top chunk(0x6022B0)입니다.
    • 크기가 0x190인 메모리 할당을 요청해서 받은 메모리와 3번째 메모리의 영역[Malloc(0x80)]이 겹치게 됩니다.

 

Overlapping chunks flow(Free chunk)

  • 다음은 5개의 메모리를 할당받고 4번째 메모리를 해제합니다.
    • 2번째 chunk의 "size"에 값을 0x101로 덮어쓴 후에 해당 chunk를 해제합니다.
    • 2번째 chunk의 크기는 0x100이되고, 다음 chunk의 시작 위치가 0x602180이 됩니다.
    • 이로 인해 2번째 chunk의 크기가 4번째 chunk의 "prev_size"에 저장되고, 4번째 chunk의 "size"가 가지고 있는 값에서 PREV_INUSE flag(0x1)가 제거됩니다.
    • 그리고 크기가 240(0xF0)byte인 메모리 할당을 malloc에 요청하면 0x602090를 반환하고, 해당 chunk의 크기는 0x100이됩니다.
    • 즉, 새로 할당받은 메모리와 3번째 메모리의 영역이 겹치게 됩니다.

Reference

 

Overlapping chunks[Korean] - TechNote - Lazenca.0x0

“html” 매크로 렌더링 오류 Notify your Confluence administrator that "Bob Swift Atlassian Apps - HTML" requires a valid license. Reason: VERSION_MISMATCH Excuse the ads! We need some help to keep our site up. “html” 매크로 렌더링 오

www.lazenca.net

 

반응형

'개념 정리 > Heap' 카테고리의 다른 글

[Heap Exploit] House of Force  (0) 2022.05.04
[Heap Exploit] Poison null byte  (0) 2022.05.04
[Heap Exploit] Unsorted bin attack  (0) 2022.05.02
[Heap Exploit] Heap Feng Shui  (0) 2022.05.01
[Heap Exploit] Heap Spray  (0) 2022.05.01
Comments