tc_idx 질문
안녕하세요. 이번 문제를 풀면서 tc_idx
와 관련하여 궁금증이 생겨서 이렇게 질문을 남깁니다.
tcache_dup
와 Tcache Poisoning
워게임을 풀 때는 tc_idx
를 신경써주지 않았는데,
해당 문제에서만 tc_idx
를 신경써줘야 하는 이유가 Ubuntu
버전 차이인가요 ? 아니면 glibc
차이인가요 ?
tc_idx
를 쓰지 않는 문제는 도커 파일이 Ubuntu 18.04
libc-2.27.so
이고,
이번 문제는 Ubuntu 19.10
, libc-2.30.so
입니다.
그리고 tc_idx
가 0
일 때, malloc
을 하면 어디서 청크를 할당받나요 ?
#pwnable
작성자 정보
답변
1
kimht
공부벌레
안녕하세요, ro님.
힙 공격 기법을 활용할 때 어떤 보호기법을 고려해야 하는가 아닌가는 Glibc 버전 차이를 따라갑니다(그런데 우분투 버전마다 기본적으로 탑재되는 Glibc 버전이 정해져 있습니다).
tc_idx가 0일 때, 0번째 tcache 엔트리에 해제된 청크가 존재하면 해당 청크를 재할당합니다. 만약 0번째 tcache 엔트리에 재사용 가능한 청크가 없으면 tcache가 아닌 다른 방식으로 할당합니다.
감사합니다.