unlink
코드
그래픽 설명
unlink 프로세스에 대한 훌륭한 그래픽 설명을 확인하세요:
보안 검사
청크의 지정된 크기가 다음 청크에 표시된 prev_size와 동일한지 확인합니다.
또한
P->fd->bk == P
및P->bk->fw == P
인지 확인합니다.청크가 작지 않은 경우,
P->fd_nextsize->bk_nextsize == P
및P->bk_nextsize->fd_nextsize == P
인지 확인합니다.
누수
unlink된 청크는 할당된 주소를 정리하지 않으므로, 이를 읽을 수 있는 접근 권한이 있으면 흥미로운 주소를 누출할 수 있습니다:
Libc 누수:
P가 이중 연결 리스트의 머리에 위치하면,
bk
는 libc의malloc_state
를 가리킵니다.P가 이중 연결 리스트의 끝에 위치하면,
fd
는 libc의malloc_state
를 가리킵니다.이중 연결 리스트에 단 하나의 무료 청크만 포함되어 있을 때, P는 이중 연결 리스트에 있으며,
fd
와bk
모두malloc_state
내부의 주소를 누출할 수 있습니다.
힙 누수:
P가 이중 연결 리스트의 머리에 위치하면,
fd
는 힙의 사용 가능한 청크를 가리킵니다.P가 이중 연결 리스트의 끝에 위치하면,
bk
는 힙의 사용 가능한 청크를 가리킵니다.P가 이중 연결 리스트에 있으면,
fd
와bk
모두 힙의 사용 가능한 청크를 가리킵니다.
Last updated