hacktricks/src/binary-exploitation/libc-heap/overwriting-a-freed-chunk.md

24 lines
1.7 KiB
Markdown

# 해제된 청크 덮어쓰기
{{#include ../../banners/hacktricks-training.md}}
제안된 여러 힙 익스플로잇 기술은 해제된 청크 내부의 포인터를 덮어쓸 수 있어야 합니다. 이 페이지의 목표는 이러한 접근을 허용할 수 있는 잠재적 취약점을 요약하는 것입니다:
### 간단한 사용 후 해제
공격자가 **해제된 청크에 정보를 쓸 수 있다면**, 필요한 포인터를 덮어쓰는 데 이를 악용할 수 있습니다.
### 이중 해제
공격자가 **같은 청크를 두 번 `free`할 수 있다면** (사이사이에 다른 청크를 해제할 수 있음) 그리고 **같은 빈에 두 번 존재하게 만들 수 있다면**, 사용자가 **청크를 나중에 할당하고**, **필요한 포인터를 쓴 다음** **다시 할당**하여 청크가 할당되는 동작을 유발할 수 있습니다 (예: 패스트 빈 공격, tcache 공격...)
### 힙 오버플로우
**해제된 청크 다음에 할당된 청크를 오버플로우**하여 그 일부 헤더/포인터를 수정할 수 있을지도 모릅니다.
### 오프 바이 원 오버플로우
이 경우 메모리에서 **다음 청크의 크기를 수정**할 수 있습니다. 공격자는 이를 악용하여 **할당된 청크의 크기를 더 크게 만들고**, 그 다음 **`free`**하여 청크가 **다른 크기(더 큰)의 빈에 추가되게** 한 다음 **가짜 크기를 할당**하면 공격자는 **실제보다 더 큰 크기의 청크에 접근**할 수 있게 되어, **따라서 겹치는 청크 상황**을 허용하게 되며, 이는 **힙 오버플로우**와 같은 방식으로 악용될 수 있습니다 (이전 섹션 참조).
{{#include ../../banners/hacktricks-training.md}}