미리 알아둘 것 ptmalloc2의 bin 구조 ptmalloc2에서의 malloc()과 heap() glibc 2.23 이하의 환경에서 실습할 수 있을겁니다. 이번에 살펴볼 Large bin attack은 ptmalloc2에서의 free()를 통해 할당 해제된 large bin의 내용을 조작하여 원하는 임의 주소(arbitrary address)에 해당 heap chunk의 절대 메모리 주소를 덮어쓰는 공격입니다.
개인적으로는 뭐 늘 그랬던 것 같기도 하지만... 이해하는데 좀 어려웠습니다.
우선 먼저 large bin이 어떤 구조를 가지고 있는지 이해할 필요가 있습니다. free()된 상태의 large bin 구조는 아래와 같습니다. (아래에서 "워드(word)"라 함은 CPU에서 한 번에 데이터를 처리하는 단위로 32비트 CPU 환경에서는 4바이트(32비트 → DWORD), 64비트 CPU 환경에서는 8바이트(64비트 → QWORD) 라고 함) 1번째 워드: prev_size ...
#
C
#
ptmalloc2
#
pwn
#
pwnable
#
디버깅
#
리눅스
#
설명
#
시스템
#
시스템해킹
#
실습
#
memory
#
malloc
#
large_bin_attack
#
chunk
#
Clang
#
dynamic
#
free
#
GDB
#
glibc
#
heap
#
heap_corruption
#
large_bin
#
예제
원문 링크 : ptmalloc2의 Large bin attack 이해