Studying Security

[Heap Exploit] House of Force 본문

개념 정리/Heap

[Heap Exploit] House of Force

J4guar 2022. 5. 4. 05:19
728x90
반응형

※ malloc()에서 Top chunk를 사용하여 메모리를 할당하는 방법

  • p = av->top; (main_arene→top이 가지고 있는 값을 victim에 저장)
  • size = chunksize(p);  (top chunk의 크기를 size에 저장)
  • "top chunk의 크기(size)" >= "새로 요청된 메모리의 크기(nb) + chunk의 최소 크기(MINSIZE)"일 경우 Top chunk의 공간 사용
  • "remainder_size" = "size" - 새로 요청된 메모리의 크기(nb)를 뺀 값
  • "remainder" = victim에 저장된 값 + 새로 요청된 메모리의 크기(nb)
  • main_arene→top = remainder
  • set_head()를 이용하여 새로 요청된 메모리의 크기(nb)를 victim→size에 저장되고, remainder_size가 가지고 있는 값을 remainder→size 에 저장합니다.
  • malloc()은 chunk2mem()가 호출되고 주소(p + 2*SIZE_SZ)를 반환합니다.

House of Force

조건

  • Top chunk의 size에 저장된 값을 다른 값으로 덮어쓸수 있을 때
  • 원하는 크기의 메모리 할당을 요청할 수 있을 때

과정

  • 메모리 할당을 malloc()에 요청한 후 Top chunk의 값을 0xffffffffffffffff으로 덮어씁니다.
  • 원하는 Memory 영역을 할당받기 위해 다음과 같이 계산된 값(size)을 malloc()함수의 인자 값으로 전달합니다.
    • "할당 받기를 원하는 메모리의 주소" - "Chunk header size(16 or 8)" - Top chunk address - "Chunk header size(16 or 8)"
    • 0x601010 - 0x10 - 0x602110 - 0x10 = 0xffffffffffffeee0
  • 메모리 할당 요청 후에 할당 받고 싶은 메모리의 주소가 Top chunk에 저장됩니다.
  • 메모리 할당을 malloc()에 요청하면 해당 메모리를 반환합니다.

<House of Force flow>

0x601010영역에 함수의 GOT가 존재한다면 해당 영역을 overwrite할 수 있다.

 

Reference

 

The House of Force[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 Lore  (0) 2022.05.07
[Heap Exploit] House of Spirit  (0) 2022.05.05
[Heap Exploit] Poison null byte  (0) 2022.05.04
[Heap Exploit] Overlapping chunks  (0) 2022.05.02
[Heap Exploit] Unsorted bin attack  (0) 2022.05.02
Comments