unlink
Código
Explicación Gráfica
Revisa esta excelente explicación gráfica del proceso de unlink:
Verificaciones de Seguridad
Verificar si el tamaño indicado del chunk es el mismo que el prev_size indicado en el siguiente chunk
También verificar que
P->fd->bk == P
yP->bk->fw == P
Si el chunk no es pequeño, verificar que
P->fd_nextsize->bk_nextsize == P
yP->bk_nextsize->fd_nextsize == P
Filtraciones
Un chunk unlink no limpia las direcciones asignadas, por lo que al tener acceso a leerlo, es posible filtrar algunas direcciones interesantes:
Filtraciones de Libc:
Si P está ubicado al principio de la lista doblemente enlazada,
bk
apuntará amalloc_state
en libcSi P está ubicado al final de la lista doblemente enlazada,
fd
apuntará amalloc_state
en libcCuando la lista doblemente enlazada contiene solo un chunk libre, P está en la lista doblemente enlazada, y tanto
fd
comobk
pueden filtrar la dirección dentro demalloc_state
.
Filtraciones de Heap:
Si P está ubicado al principio de la lista doblemente enlazada,
fd
apuntará a un chunk disponible en el heapSi P está ubicado al final de la lista doblemente enlazada,
bk
apuntará a un chunk disponible en el heapSi P está en la lista doblemente enlazada, tanto
fd
comobk
apuntarán a un chunk disponible en el heap
Last updated