House of Lore | Small bin Attack
Informações Básicas
Código
Isso não está funcionando
Isso não está funcionando mesmo tentando contornar algumas verificações e recebendo o erro:
malloc(): unaligned tcache chunk detected
Este exemplo ainda está funcionando: https://guyinatuxedo.github.io/40-house_of_lore/house_lore_exp/index.html
Objetivo
Inserir um fake small chunk no small bin para que seja possível alocá-lo. Observe que o small chunk adicionado é o falso criado pelo atacante e não um falso em uma posição arbitrária.
Requisitos
Criar 2 chunks falsos e vinculá-los juntos e com o chunk legítimo no small bin:
fake0.bk
->fake1
fake1.fd
->fake0
fake0.fd
->legit
(você precisa modificar um ponteiro no chunk do small bin liberado por meio de alguma outra vulnerabilidade)legit.bk
->fake0
Então você poderá alocar fake0
.
Ataque
Um pequeno chunk (
legit
) é alocado, em seguida, outro é alocado para evitar a consolidação com o top chunk. Em seguida,legit
é liberado (movendo-o para a lista de bins não ordenados) e um chunk maior é alocado, movendolegit
para o small bin.Um atacante gera alguns chunks pequenos falsos e faz as ligações necessárias para contornar as verificações de integridade:
fake0.bk
->fake1
fake1.fd
->fake0
fake0.fd
->legit
(você precisa modificar um ponteiro no chunk do small bin liberado por meio de alguma outra vulnerabilidade)legit.bk
->fake0
Um pequeno chunk é alocado para obter
legit
, fazendo com quefake0
entre na lista superior dos small binsOutro pequeno chunk é alocado, obtendo
fake0
como um chunk, permitindo potencialmente ler/escrever ponteiros dentro dele.
Referências
Last updated