현 gblic 2.23 추후 2.27.ver above __tcache 내용도 추가 하겠습니다.
Dangling Pointer : 유효하지 않은 메모리 영역을 가리키는 포인터.
free 함수: 청크를 ptmalloc 에 반환 시킴
--> pointer is still alive : Dangling Pointer
Use After Free: 개념은 말 그자체로 해제된 메모리에 다시 접근하게 될 때 나타나는 취약점을 뜻함.
UAF는 다른 기법을 사용할 수 있게 하는 하나의 수단.
1. Unsorted bin 과 함게 사용하기
unsorted bin에 연결되는 청크의 fd, bk는 libc내부의 주소가 쓰여, 이를 이용해 libc가 매핑된 주소를 leak할 수 있습니다.
(*unsorted bin은 small bin과 large bin 크기의 힙 chunk가 해제되면 이후 재할당을 위해 사용되는 bin.)
특징- unsorted bin의 개수는 1개, FIFO구조.
(*0x410 = 1040byte 이하의 크기를 갖는 청크는 tcache에 먼저 삽입되므로, 이보다 큰 청크를 해제해서 unsorted bin에 연결)
unsorted bin에 포함되는 청크와 탑 청크는 병합 대상이므로, 이 둘이 맞닿으면 청크가 병합됨.
--> 연속으로 2개를 청크에 할당, 그 후 처음 할당한 청크 해제.
usortedbin 을 사용해 fd 혹은 bk의 값을 uaf로 leak 해서 libc base를 구할 경우 user data 영역에 쓴 값과 쓰이기 전 free된 값을 비교하여 그 차이를 유의하여 libc base를 최종적으로 구한다.
'Pwnable > Tech' 카테고리의 다른 글
-Heap- DFB(Double Free Bug) (0) | 2022.01.05 |
---|---|
-Heap- ptmalloc2의 구조 (0) | 2022.01.05 |
environ ptr -하나하나 뜯어보기- (0) | 2021.11.29 |
메모리에 관한 내용 정리(pptx) (0) | 2021.11.14 |
Heap - House of Force (0) | 2021.10.27 |