what is double free and how it work

double free가 어떤식으로 발생하는지 항상 이해가 안되서 이번에 확실하게 분석한뒤 정리해 보았다. double free가 발생하는 것은 libc버전 마다 바르다. libc 2.27 버전에서는 dfb에 대한 방어가 없지만 2.30 이상 부터는 존재한다. 따라서 이를 확실히 알고 공격을해야한다. dfb가 어떤 방식으로 arbitrary writable이 가능한지에 대해 묻는 다면 위에 사진을 참고하면 될것이다.
tcachebins에서 fd만을 사용하여 일방통행의 연결 리스트를 사용하게 된다. 이때 malloc을 해줄때 fd 위치에 있는 값을 pop을 해서 다음 malloc 위치로 정하는 것이 핵심이다.