unlink
Last updated
Last updated
Aprende y practica Hacking en AWS:HackTricks Training AWS Red Team Expert (ARTE) Aprende y practica Hacking en GCP: HackTricks Training GCP Red Team Expert (GRTE)
Consulta esta gran explicación gráfica del proceso unlink:
Verifica si el tamaño indicado del chunk es el mismo que el prev_size indicado en el siguiente chunk
Verifica también que P->fd->bk == P
y P->bk->fw == P
Si el chunk no es pequeño, verifica que P->fd_nextsize->bk_nextsize == P
y P->bk_nextsize->fd_nextsize == P
Un chunk desvinculado no limpia las direcciones asignadas, por lo que tener acceso a él permite filtrar algunas direcciones interesantes:
Fugas de Libc:
Si P está ubicado en la cabeza de la lista doblemente enlazada, bk
apuntará a malloc_state
en libc
Si P está ubicado al final de la lista doblemente enlazada, fd
apuntará a malloc_state
en libc
Cuando la lista doblemente enlazada contiene solo un chunk libre, P está en la lista doblemente enlazada, y tanto fd
como bk
pueden filtrar la dirección dentro de malloc_state
.
Fugas de Heap:
Si P está ubicado en la cabeza de la lista doblemente enlazada, fd
apuntará a un chunk disponible en el heap
Si P está ubicado al final de la lista doblemente enlazada, bk
apuntará a un chunk disponible en el heap
Si P está en la lista doblemente enlazada, tanto fd
como bk
apuntarán a un chunk disponible en el heap
Aprende y practica Hacking en AWS:HackTricks Training AWS Red Team Expert (ARTE) Aprende y practica Hacking en GCP: HackTricks Training GCP Red Team Expert (GRTE)