Unlink exploit
For this method to work u need to have
- A global pointer
- Heap overflow
Method to exploit :
1) Creation of fake chunk :
- create a fake chunk inside a chunk pointed by global pointer with prev_size , size , fd , bk . 
- create fd and bk of fake chunk such that - *(fd+12) = *(bk+8) = *(global ptr) = chunk_0
-   With this we bypass the check P->fd->bk != P
 
- Set size of fake chunk as : - chunk_0->size = *fd // prev_size
- this bypass the check made by libc chunksize(P) != fd->prev_size
 
2) Modifying chunk_1
- set chunk1->prev_size = size_requested - such that it points at start of fake chunk
- this makes our chunk_0 to shrink
 
- set chunk1->size prev inuse bit 0 
3) Unlink
- Now free(chunk_1) 
- our fake chunk gets unlinked and causes to overwrite the global pointer 
- We can now have arbitaray write