Skip to content

Latest commit

 

History

History
42 lines (25 loc) · 1.17 KB

unlink-v2-0.md

File metadata and controls

42 lines (25 loc) · 1.17 KB

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