SYSTEM HACKING

sysmalloc mmap을 통한 libc leak

msh1307 2022. 10. 4. 23:29

sysmalloc_mmap의 코드 일부다.

malloc 할 때 일반적으로 큰 사이즈를 요청하면, brk나 sbrk로 program break를 쭉 늘리거나 감당할만하면, 탑 청크에서 떼주는데, malloc(0x200000) 이런 식으로 엄청 크게 줘버리면, 위 sysmalloc_mmap을 통해 mmap syscall을 부른다.

이때 커널에서 리턴받은 메모리와 libc가 로드된 주소와의 오프셋이 일정하다는 특징을 통해 libc leak이 가능하다.

libc 바로 앞에 딱 달라붙어있는게 mmap으로 할당받은 곳이다.

 

임의 크기로 malloc이 가능하고, free를 쓸 수 없어서 릭 벡터가 안 보이면 한 번쯤 생각해볼 만한 트릭인 것 같다.