House of Lore | Small bin Attack
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)
Información Básica
Código
Revisa el código en https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/house_of_lore/
Esto no está funcionando
Esto tampoco está funcionando, incluso si intenta evitar algunas verificaciones obteniendo el error:
malloc(): unaligned tcache chunk detected
Este ejemplo aún funciona: https://guyinatuxedo.github.io/40-house_of_lore/house_lore_exp/index.html
Objetivo
Insertar un trozo pequeño falso en el small bin para luego poder asignarlo. Ten en cuenta que el trozo pequeño añadido es el falso creado por el atacante y no uno falso en una posición arbitraria.
Requisitos
Crear 2 trozos falsos y enlazarlos entre sí y con el trozo legítimo en el small bin:
fake0.bk
->fake1
fake1.fd
->fake0
fake0.fd
->legit
(necesitas modificar un puntero en el trozo liberado del small bin a través de alguna otra vulnerabilidad)legit.bk
->fake0
Entonces podrás asignar fake0
.
Ataque
Se asigna un trozo pequeño (
legit
), luego se asigna otro para evitar la consolidación con el trozo superior. Luego, se liberalegit
(moviéndolo a la lista de bins no ordenados) y se asigna un trozo más grande, moviendolegit
al small bin.Un atacante genera un par de trozos pequeños falsos y realiza el enlace necesario para evitar las comprobaciones de integridad:
fake0.bk
->fake1
fake1.fd
->fake0
fake0.fd
->legit
(necesitas modificar un puntero en el trozo liberado del small bin a través de alguna otra vulnerabilidad)legit.bk
->fake0
Se asigna un trozo pequeño para obtener
legit
, haciendo quefake0
esté en la lista superior de small binsSe asigna otro trozo pequeño, obteniendo
fake0
como un trozo, permitiendo potencialmente leer/escribir punteros dentro de él.
Referencias
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)
Last updated