House of Lore | Small bin Attack
Grundlegende Informationen
Code
Überprüfen Sie den Code unter https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/house_of_lore/
Dies funktioniert nicht
Dies funktioniert auch nicht, selbst wenn versucht wird, einige Überprüfungen zu umgehen und den Fehler zu erhalten:
malloc(): unaligned tcache chunk detected
Dieses Beispiel funktioniert noch: https://guyinatuxedo.github.io/40-house_of_lore/house_lore_exp/index.html
Ziel
Fügen Sie einen gefälschten kleinen Chunk in den Small Bin ein, damit es möglich ist, ihn zuzuweisen. Beachten Sie, dass der hinzugefügte kleine Chunk der gefälschte ist, den der Angreifer erstellt und nicht einer an einer beliebigen Position.
Anforderungen
Erstellen Sie 2 gefälschte Chunks und verknüpfen Sie sie miteinander und mit dem legitimen Chunk im Small Bin:
fake0.bk
->fake1
fake1.fd
->fake0
fake0.fd
->legit
(Sie müssen einen Zeiger im freigegebenen Small Bin Chunk über eine andere Schwachstelle ändern)legit.bk
->fake0
Dann können Sie fake0
zuweisen.
Angriff
Ein kleiner Chunk (
legit
) wird zugewiesen, dann wird ein weiterer zugewiesen, um eine Konsolidierung mit dem Top Chunk zu verhindern. Dann wirdlegit
freigegeben (wodurch es in die Liste der unsortierten Bins verschoben wird) und ein größerer Chunk wird zugewiesen, wodurchlegit
in den Small Bin verschoben wird.Ein Angreifer generiert ein paar gefälschte kleine Chunks und erstellt die erforderlichen Verknüpfungen, um die Integritätsprüfungen zu umgehen:
fake0.bk
->fake1
fake1.fd
->fake0
fake0.fd
->legit
(Sie müssen einen Zeiger im freigegebenen Small Bin Chunk über eine andere Schwachstelle ändern)legit.bk
->fake0
Ein kleiner Chunk wird zugewiesen, um legit zu erhalten, wodurch
fake0
in die Top-Liste der kleinen Bins gelangtEin weiterer kleiner Chunk wird zugewiesen, wodurch
fake0
als Chunk erhalten wird, was potenziell das Lesen/Schreiben von Zeigern darin ermöglicht.
Referenzen
Last updated