House of Einherjar
Reading time: 4 minutes
tip
AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)
HackTricks का समर्थन करें
- सदस्यता योजनाएँ देखें!
- हमारे 💬 Discord समूह या टेलीग्राम समूह में शामिल हों या हमारे Twitter 🐦 @hacktricks_live** का पालन करें।**
- हैकिंग ट्रिक्स साझा करें और HackTricks और HackTricks Cloud गिटहब रिपोजिटरी में PRs सबमिट करें।
Basic Information
Code
- https://github.com/shellphish/how2heap/blob/master/glibc_2.35/house_of_einherjar.c से उदाहरण देखें
- या https://guyinatuxedo.github.io/42-house_of_einherjar/house_einherjar_exp/index.html#house-of-einherjar-explanation से (आपको tcache भरने की आवश्यकता हो सकती है)
Goal
- लक्ष्य लगभग किसी भी विशिष्ट पते पर मेमोरी आवंटित करना है।
Requirements
- जब हम एक चंक आवंटित करना चाहते हैं तो एक नकली चंक बनाएं:
- सैनीटी चेक को बायपास करने के लिए पॉइंटर्स को स्वयं की ओर सेट करें
- एक चंक से अगले चंक तक
PREV_INUSE
फ्लैग को संशोधित करने के लिए एक बाइट ओवरफ्लो जिसमें एक नल बाइट हो। - नल द्वारा अपमानित चंक के
prev_size
में अपने और नकली चंक के बीच का अंतर इंगित करें - नकली चंक का आकार भी सैनीटी चेक को बायपास करने के लिए समान आकार में सेट किया जाना चाहिए
- इन चंक्स का निर्माण करने के लिए, आपको एक हीप लीक की आवश्यकता होगी।
Attack
A
नकली चंक एक चंक के अंदर बनाया गया है जिसे हमलावर द्वारा नियंत्रित किया जाता है जो मूल चंक को बायपास करने के लिएfd
औरbk
के साथ इंगित करता है- 2 अन्य चंक्स (
B
औरC
) आवंटित किए जाते हैं B
में एक द्वारा एक का दुरुपयोग करते हुएprev in use
बिट को साफ किया जाता है औरprev_size
डेटा कोC
चंक के आवंटित होने के स्थान से पहले उत्पन्न नकलीA
चंक के बीच के अंतर के साथ ओवरराइट किया जाता है- यह
prev_size
और नकली चंकA
में आकार समान होना चाहिए ताकि चेक को बायपास किया जा सके। - फिर, tcache भरा जाता है
- फिर,
C
को मुक्त किया जाता है ताकि यह नकली चंकA
के साथ समेकित हो जाए - फिर, एक नया चंक
D
बनाया जाता है जो नकलीA
चंक में शुरू होगा औरB
चंक को कवर करेगा - हाउस ऑफ एनहेरजार यहाँ समाप्त होता है
- इसे एक तेज़ बिन हमले या Tcache विषाक्तता के साथ जारी रखा जा सकता है:
- तेज़ बिन / Tcache में जोड़ने के लिए
B
को मुक्त करें B
काfd
ओवरराइट किया जाता है जिससे यह लक्षित पते की ओर इंगित करता है जोD
चंक का दुरुपयोग करता है (क्योंकि इसमेंB
शामिल है)- फिर, 2 mallocs किए जाते हैं और दूसरा लक्षित पते को आवंटित करने जा रहा है
References and other examples
- https://github.com/shellphish/how2heap/blob/master/glibc_2.35/house_of_einherjar.c
- CTF https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/house_of_einherjar/#2016-seccon-tinypad
- पॉइंटर्स को मुक्त करने के बाद वे नल नहीं होते, इसलिए उनके डेटा तक पहुंचना अभी भी संभव है। इसलिए एक चंक को अनसॉर्टेड बिन में रखा जाता है और इसमें शामिल पॉइंटर्स को लीक किया जाता है (libc leak) और फिर एक नया हीप अनसॉर्टेड बिन पर रखा जाता है और इसे प्राप्त पॉइंटर से एक हीप पता लीक किया जाता है।
- baby-talk. DiceCTF 2024
strtok
में नल-बाइट ओवरफ्लो बग।- Tcache विषाक्तता के साथ एक ओवरलैपिंग चंक्स स्थिति प्राप्त करने और एक मनमाना लिखने की प्राइमिटिव प्राप्त करने के लिए हाउस ऑफ एनहेरजार का उपयोग करें।
tip
AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)
HackTricks का समर्थन करें
- सदस्यता योजनाएँ देखें!
- हमारे 💬 Discord समूह या टेलीग्राम समूह में शामिल हों या हमारे Twitter 🐦 @hacktricks_live** का पालन करें।**
- हैकिंग ट्रिक्स साझा करें और HackTricks और HackTricks Cloud गिटहब रिपोजिटरी में PRs सबमिट करें।