tcache

포너블/Heap

Tcache memory leak

tcache에서 라이브러리 영역 주소를 릭하는 방법은 다음과 같다.1. 7개의 tcache_entry 를 꽉 채워 tcache를 사용하지 않도록 한 후 unsorted bin을 만든다. (fast bin에 들어가지 않을 크기여야한다.)// gcc -o leak1 leak1.c -no-pie#include #include #include int main(){ uint64_t *ptr[10]; int i; for(i=0;i 2. tcache에서 허용하지 않는 크기를 할당한 이후 해제해 unsorted bin 을 만든다.// gcc -o leak2 leak2.c -no-pie#include #include #include int main(){ uint64_t *ptr[2]; ptr[0] = malloc(0x4..

포너블/Heap

Tcache House of Spirit

공격조건fake chunk의 주소를 알아야 한다. 임의의 주소를 free할 수 있다. Tcache House of Spirit 이란?free 함수의 인자를 조작하여 임의의 메모리를 해제할 수 있을 때 사용할 수 있는 기법으로 원하는 주소에 힙을 할당해 임의의 주소에 값을 쓸 수 있다. 예시// gcc -o spirit1 spirit1.c -no-pie#include #include int main(){ long long fake_chunk[10] = {0,}; fake_chunk[0] = 0; fake_chunk[1] = 0x31; fake_chunk[2] = 0x41414141; free(&fake_chunk[2]); char *fake_alloc = malloc(0x20); printf("fake c..

포너블/Heap

Tcache dup & poisoning

공격조건2.27에서는 가능,glibc 2.27의 tcache는 Double Free에 대한 검증이 없는 것으로 알려져 있으나, 로컬에서 사용 중인 Glibc 2.27의 버전은 Ubuntu GLIBC 2.27-3ubuntu1.4로 이후 버전에서 도입된 검증 로직이 적용되었다.사실상 2.26까지 가능하다.임의의 할당과 해제가 가능해야한다.Tcache dup란?tcache는 double free와 같은 버그의 검증이 존재하지 않아 다른 공격기법에 비해 난이도가 낮다. tcache dup는 double free bug를 이용하여 tcache_entry를 조작해 이미 할당된 메모리에 다시 힙 청크를 할당하는 공격기법이다. 2.26 으로 도커짜기도 귀찮으니 그냥 패스 하자. 공격 방식은 fastbin dup와 거의..