<Heap Allocator Exploit> 강의를 보다가 제일 마지막 챕터(19번째)에 있는 <Tcache memory leak> 부분에서 stdout_leak.c
와 관련되어서 실습을 하는 부분을 재현해보려고 하는데 Ubuntu 22.04., Ubuntu 18.04., Ubuntu 16.04. 에서 모두 재현이 되지 않습니다. (WSL2, Windows 11 Pro, 64-Bit Intel CPU)
실습 코드를 보면 double free를 하는 부분이 나오는데, 주어진 stdout_leak.c
소스코드를 보면 chunk의 헤더를 변조시킨다던가 같은 내용 없이 그냥 free()
를 하는데, 이 때문인지 Dreamhack에서 강의와 함께 제공하는 exploitation code로 실습을 할 때마다 아래와 같이 double free로 인해 프로그램이 중단되었다는 내용이 나옵니다. (glibc 버전마다 살짝 다른 것 같긴 한데 제 환경에서는 다 저렇게 double free에 대한 메시지가 나왔습니다.)
Ref) https://learn.dreamhack.io/16#106
그래서 그런지 적어도 강의에 나온대로는 실습이 안되는 것 같은데, 혹시 이 실습은 더이상 reproducible하지 않은건가요?
사실 heap 부분을 어떻게 공부하면 좋을지 몰라서 일단 강의의 내용을 최대한 비슷하게 만들어서 따라해보고 있는데 후반부로 갈수록 재현이나 실습이 제대로 되지 않는 부분이 있어(어쩌면 제가 놓치고 있는게 있을 수도 있습니다) 살짝 걱정되네요.
ubuntu 17.04로 해보실래요??