y0u_bat
[how2heap] House of Spirit 본문
간단하게 설명하면, overflow를 통해서 a 포인터 값을 조작해서 "원하는 주소"의 free를 시키고,
다시 할당할때 "원하는 주소"를 할당하는 기술이다.
buf에 fake chunk 청크를 만들고, a 포인터를 buf 주소로 덮어버리면 free(buf)가 된다.
free할때 glibc 부분을 보면, free하는 청크의 뒤에 청크의 크기를 검사한다.
chunk_at_offset(p,size)->size <= 2* SIZE_SZ || chunksize (chunk_at_offset (p,size)) >= av->system_mem
SIZE_SZ*2 보다 작거나 av->system_mem 보다 크지만 않으면 된다.
즉 너무 작거나 너무 크지만 않으면 상관 없다.
buf 에 fake chunk 만들때 사이즈를 0x20 정도로 한다치면 그뒤 청크의 사이즈 를 지정해주면 된다.
free하면 fastbin에 가짜청크 주소가 박혀있는걸 볼수있다.
malloc(32)하면 가짜청크 주소로 할당되는것을 볼 수 있다.
'System' 카테고리의 다른 글
Whitehat 2018 Final PAC - 500pt (0) | 2018.07.31 |
---|---|
A case study of JavaScriptCore and CVE-2016-4622 (0) | 2017.06.12 |
Double Free Bug Vulnerability (0) | 2017.01.09 |
[heap] fastbin_dup_into_stack.c (0) | 2016.11.02 |
[heap] how2heap first_fit.c (0) | 2016.10.20 |
Comments