mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
48 lines
4.5 KiB
Markdown
48 lines
4.5 KiB
Markdown
# 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`
|
|
- एक छोटा चंक आवंटित किया जाता है ताकि वैध प्राप्त किया जा सके, **`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}}
|