48 lines
3.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# House of Lore | Small bin Attack
{{#include ../../banners/hacktricks-training.md}}
## Basic Information
### Code
- Έλεγχος του από [https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/house_of_lore/](https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/house_of_lore/)
- Αυτό δεν λειτουργεί
- Ή: [https://github.com/shellphish/how2heap/blob/master/glibc_2.39/house_of_lore.c](https://github.com/shellphish/how2heap/blob/master/glibc_2.39/house_of_lore.c)
- Αυτό δεν λειτουργεί ακόμα και αν προσπαθεί να παρακάμψει κάποιους ελέγχους και εμφανίζει το σφάλμα: `malloc(): unaligned tcache chunk detected`
- Αυτό το παράδειγμα λειτουργεί ακόμα: [**https://guyinatuxedo.github.io/40-house_of_lore/house_lore_exp/index.html**](https://guyinatuxedo.github.io/40-house_of_lore/house_lore_exp/index.html)
### Goal
- Εισάγετε ένα **ψεύτικο μικρό κομμάτι στον μικρό κάδο ώστε να είναι δυνατή η κατανομή του**.\
Σημειώστε ότι το μικρό κομμάτι που προστίθεται είναι το ψεύτικο που δημιουργεί ο επιτιθέμενος και όχι ένα ψεύτικο σε τυχαία θέση.
### Requirements
- Δημιουργήστε 2 ψεύτικα κομμάτια και συνδέστε τα μεταξύ τους και με το νόμιμο κομμάτι στον μικρό κάδο:
- `fake0.bk` -> `fake1`
- `fake1.fd` -> `fake0`
- `fake0.fd` -> `legit` (πρέπει να τροποποιήσετε έναν δείκτη στο ελεύθερο μικρό κομμάτι μέσω κάποιας άλλης ευπάθειας)
- `legit.bk` -> `fake0`
Έτσι θα μπορείτε να κατανεμηθείτε `fake0`.
### Attack
- Ένα μικρό κομμάτι (`legit`) κατανεμήθηκε, στη συνέχεια, ένα άλλο κατανεμήθηκε για να αποτραπεί η συγχώνευση με το κορυφαίο κομμάτι. Στη συνέχεια, το `legit` απελευθερώνεται (μετακινώντας το στη λίστα των αταξινόμητων κομματιών) και ένα μεγαλύτερο κομμάτι κατανεμήθηκε, **μετακινώντας το `legit` στον μικρό κάδο.**
- Ένας επιτιθέμενος δημιουργεί μερικά ψεύτικα μικρά κομμάτια και κάνει την απαραίτητη σύνδεση για να παρακάμψει τους ελέγχους εγκυρότητας:
- `fake0.bk` -> `fake1`
- `fake1.fd` -> `fake0`
- `fake0.fd` -> `legit` (πρέπει να τροποποιήσετε έναν δείκτη στο ελεύθερο μικρό κομμάτι μέσω κάποιας άλλης ευπάθειας)
- `legit.bk` -> `fake0`
- Ένα μικρό κομμάτι κατανεμήθηκε για να αποκτήσει το legit, κάνοντάς το **`fake0`** στην κορυφή της λίστας των μικρών κάδων
- Ένα άλλο μικρό κομμάτι κατανεμήθηκε, αποκτώντας το `fake0` ως κομμάτι, επιτρέποντας δυνητικά την ανάγνωση/γραφή δεικτών μέσα σε αυτό.
## References
- [https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/house_of_lore/](https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/house_of_lore/)
- [https://heap-exploitation.dhavalkapil.com/attacks/house_of_lore](https://heap-exploitation.dhavalkapil.com/attacks/house_of_lore)
- [https://guyinatuxedo.github.io/40-house_of_lore/house_lore_exp/index.html](https://guyinatuxedo.github.io/40-house_of_lore/house_lore_exp/index.html)
{{#include ../../banners/hacktricks-training.md}}