오늘은 heap exploitation 기법 중 하나인 unsafe unlink 기법을 설명하려고 한다.
이 기법을 사용하려면 조건이 있는데 그 것은 바로 heap overflow를 통해서 fake chunk를 만들수 있어야하며 flag 중 p를 0으로 바꿀 수 있어야 한다. 즉 heap overflow가 가능한지가 핵심이다. 이를 통해서 vitim chunk를 free를 시킬 때 fake chunk 즉 이미 free된 chunk를 병합하기 때문에 fake chunk에 이미 작성되어 있는 fd bk가 설정이 된다. 이를 통해서 병합된 free chunk를 malloc으로 할당을 시키면 내가 설정해 놓은 위치에 메모리 할당을 통해서 control이 가능해진다는 의미이다.
unlink를 하려면 double linked여야함으로 tcache나 fast bin은 안되고 unsorted bin large bin 같은 bin이여야 가능하다.