완료됨
_int_free 부분 설명에 대한 의문
해당 설명에따르면 20번 째 줄에서 재할당하려는 청크의 key 값
이라고 하는데, _int_free의 경우 free() 호출 시 호출되는 함수로 알고있습니다. 그러면 재할당하려는 청크의 key 값
이라는 표현이 조금 어색해 보입니다. 위의 logic에서 제가 이해한 바는 tcache_entry 를 생성하여 현재 tcache에 존재하는지 체크하는 로직으로 보여 재할당하려는 청크의 key 값
보다는 해제하려는 청크가 tcache에 존재하는지 체크해야하는게 아닌지 라고 생각이 듭니다.
제가 잘못이해한 부분이 있다면 알려주시길 바랍니다!
#시스템해킹
#기초
#dfb
#더블_프리_버그
작성자 정보
답변
1
Sechack
2024 Invitational Contenders
아뇨. 단순히 저 로직은 해제하려는 chunk의 key값이 tcache인가를 검증하는 로직입니다. tcache에 들어간 free chunk를 보면 아시겠지만 bk부분에 tcache주소가 들어있습니다. 그렇기 때문에 같은 chunk를 해제하려고 하면 key부분에 tcache주소가 들어가있겠죠? 이걸로 double free를 잡는 로직입니다. 따라서 free chunk의 key값을 덮을 수만 있다면 해당 로직을 bypass할 수 있습니다.