tcache를 잘못 알고있는건가해서 여쭈어봅니다
맨 처음에 해제된 청크가 제일 마지막에 재할당되는 LIFO 방식으로 알고있었는데
실습문제 코드에서 DFB로 duplication을 일으킨 뒤 libc Leak 과정 중에
첫 번째 할당 alloc(0x30, "BBBBBBBB")에서는 예상과 달리 맨처음 해제되었던 청크가 할당되고,
두 번째 할당 alloc(0x30, "\x60")에서야 stdout에 만든 free chunk가 할당되는게 이해가 안됩니다.
제 생각으로는 stdout에 만든 free chunk가 먼저 재할당되어야하는게 아닌가 싶었습니다
제가 완전 다르게 이해하고있는걸까요?.. ㅠ
#pwnable
작성자 정보
답변
1
wyv3rn
무플 방지 위원회장
음...? 제가 질문을 잘 이해하지 못하고 있는 느낌이긴 하지만...
티캐시 포이즈닝의 경우 기본 원리가
- 힙을 할당한다.
- 힙을 해제한다.
- 해제한 청크의 bk 값을 수정한다
- 해제한 청크의 fd 값을 티캐시에 쓸 값으로 수정한다.
- 할당한다. 이때 티캐시에 4의 값이 삽입된다.
- 할당한다. 이때 4의 값 위치에 할당된다.
입니다.
혹시 이 댓글로도 궁금하신 부분이 해결이 안된다면 댓글 부탁 드립니다.