House of Lore | Small bin Attack
Βασικές Πληροφορίες
Κώδικας
Ελέγξτε αυτόν από https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/house_of_lore/
Αυτό δεν λειτουργεί
Αυτό δεν λειτουργεί ακόμα κι αν προσπαθεί να παρακάμψει μερικούς ελέγχους παίρνοντας το σφάλμα:
malloc(): unaligned tcache chunk detected
Αυτό το παράδειγμα εξακολουθεί να λειτουργεί: https://guyinatuxedo.github.io/40-house_of_lore/house_lore_exp/index.html
Στόχος
Εισαγωγή ενός ψεύτικου μικρού κομματιού στον μικρό bin ώστε να είναι δυνατή η εκχώρησή του. Σημειώστε ότι το μικρό κομμάτι που προστέθηκε είναι αυτό που δημιουργεί ο επιτιθέμενος και όχι ένα ψεύτικο σε μια αυθαίρετη θέση.
Απαιτήσεις
Δημιουργήστε 2 ψεύτικα κομμάτια και συνδέστε τα μεταξύ τους και με το νόμιμο κομμάτι στον μικρό bin:
fake0.bk
->fake1
fake1.fd
->fake0
fake0.fd
->legit
(χρειάζεται να τροποποιήσετε ένα δείκτη στο απελευθερωμένο μικρό κομμάτι bin μέσω κάποιας άλλης ευπάθειας)legit.bk
->fake0
Τότε θα μπορείτε να εκχωρήσετε το fake0
.
Επίθεση
Ένα μικρό κομμάτι (
legit
) εκχωρείται, στη συνέχεια εκχωρείται ένα άλλο για να αποτρέψει τη συγχώνευση με το κομμάτι κορυφής. Στη συνέχεια, τοlegit
απελευθερώνεται (μετακινώντας το στη λίστα αταξινόμητων κομματιών) και εκχωρείται ένα μεγαλύτερο κομμάτι, μετακινώντας τοlegit
στον μικρό bin.Ένας επιτιθέμενος δημιουργεί μερικά ψεύτικα μικρά κομμάτια και κάνει την απαραίτητη σύνδεση για να παρακάμψει τους έλεγχους ακεραιότητας:
fake0.bk
->fake1
fake1.fd
->fake0
fake0.fd
->legit
(χρειάζεται να τροποποιήσετε ένα δείκτη στο απελευθερωμένο μικρό κομμάτι bin μέσω κάποιας άλλης ευπάθειας)legit.bk
->fake0
Εκχωρείται ένα μικρό κομμάτι για να πάρει το
legit
, κάνοντας τοfake0
στην κορυφή της λίστας των μικρών κομματιώνΕκχωρείται άλλο ένα μικρό κομμάτι, παίρνοντας το
fake0
ως ένα κομμάτι, επιτρέποντας ενδεχομένως την ανάγνωση/εγγραφή δεικτών μέσα σε αυτό.
Αναφορές
Last updated