dreamhack system hacking roadmap 강의의 Memory Corruption: Double Free Bug 중 Mitigation for Tcache Double Free Bug & Tcache Duplication 강의 내용을 정리해보았다.
https://dreamhack.io/learn/116#t719
학습 후 감동의 글
동적으로 메모리 할당하고 해제를 두번하면 해제된 메모리를 관리하는 free list에 똑같은 메모리 조각 chunk가 두개 연결되는데, 이때 똑같은 크기에 메모리를 할당요청하면 운영체제의 메모리 효율성 + ptmalloc 메모리 할당자 알고리즘 때문에 방금 사용되고 반납된 즉, 해제된 메모리주소를 그대로 할당해준다. 그러면 freelist에 동일한 주소의 메모리가 남아있고 재할당 요청한 주소도 프로그램한테 넘겨줘서 맘대로 수정할 수 있는 상태가 되는데, 이때 공유하는 메모리 주소가 동일하니까 할당된 영역에 값을 쓰면 free list 안에 남아있는 메모리에도 값이 쓰이게됨 이러면 이 free list에 있는 청크안에는 할당된 상태에는 없는 fd랑 bk라는 값이 있는데 그 값도 수정할 수 있게 되겠지. 근데 이 값들이 free list안에 있는 메모리 주소를 각각 가리키고있는 값이기 때문에, 이 값을 수정하면 결국 free list에 임의 주소를 추가할 수 있게 되는거야 그러면 ㅁㅊ 내가 미리 작성해둔 메모리 영역에 값을 나중에 다른애가 재할당했을때 그대로 프로그램에 할당해주는 메모리 주소로 들어가게 되고 거기에 값이 그대로 쓰이는거다. 어떻게 이런생각을 하지 진짜 해커들은 천재다.
'필기 > 시스템 해킹 (System hacking)' 카테고리의 다른 글
[Dreamhack] Mitigation: Stack Canary (0) | 2022.05.03 |
---|---|
[Dreamhack] Exploit Tech: Shellcode (0) | 2022.04.01 |
[Dreamhack] Background:ptmalloc2 (0) | 2022.02.10 |