Tcache Poisoning이란 DFB를 활용해 해당 청크를 해제된 청크임과 할당된 청크, 즉 중첩 상태를 만들어 이를 활용해, 임의 주소에 청크를 할당하여, 그청크를 이용하여 임의 주소에 데이터를 읽거나 조작하는 공격 기술을 말한다.
첫째줄 A1이 해제되어 청크가 tcache_entry에 할당되고, 그다음에 B1이 DFB로 할당되었다고 하자.
그후 LIFO 구조 이기 떄문에 B1을 할당하여 A1를 중첩 상태로 만들고 B1의 내용의 첫 8바이트, 즉 fd(next)값, 나 이후로 해제된 값, stdout으로 지정해준다. 그럼 A1이 할당되면서 stdout_plt를 다음 할당 청크로 주소로 생각한다. 그후 할당을 한번 더 하게 되면 stdout_plt가 청크가 되며, 청크를 수정할 경우 "got를 수정"하게 되는 마법이 일어난다. 물론 이를 읽어와 "libc base"를 구할 수도 있다.
'Pwnable > Tech' 카테고리의 다른 글
PIE와 RELRO (0) | 2022.01.27 |
---|---|
-STACK- Stack Canary (0) | 2022.01.06 |
-Heap- DFB(Double Free Bug) (0) | 2022.01.05 |
-Heap- ptmalloc2의 구조 (0) | 2022.01.05 |
Heap Series - Use After Free (0) | 2021.12.25 |