[How2Heap] House_of_spirit

House_of_spirit.c

house_of_spirit.c

house of spirit
malloc을 한 번 호출해서 메모리를 설정한다.
이제 fake fastbin 영역을 가리키는 포인터를 overwirte할 것이다.
이 영역(메모리 길이: 80)은 chunk가 2개 있다. 첫번째는 0x7fffffffe338에서 시작하고 두번째는 0x7fffffffe378에서 시작한다.
이 영역의 chunk 크기는 fastbins에 속하는 영역(x64: <= 128bytes)보다 큰 16bytes 이상이어야 한다.(chunk data를 수용하기 위해) PREV_INUSE(lsb)는 fastbin-sized chunk의 free로 무시되지만 IS_MMAPPED(second lsb)나 NON_MAIN_ARENA(third lsb)는 문제를 야기한다.
이제 포인터를 첫번째 fake chunk안에 있는 fake 영역의 주소로 overwrite할 것이다, 0x7fffffffe338
overwrite된 포인터를 free한다.
-------free(a)-------
next malloc은 0x7fffffffe338에 있는 fake chunk의 영역을 반환할 것이다. 그러면 0x7fffffffe340이 될 것이다!
malloc(0x30): 0x7fffffffe340

공유하기