hacktricks/binary-exploitation/heap/house-of-force.md

5.1 KiB

House of Force

जानें AWS हैकिंग को शून्य से हीरो तक htARTE (HackTricks AWS Red Team Expert) के साथ!

HackTricks का समर्थन करने के अन्य तरीके:

मौलिक जानकारी

कोड

लक्ष्य

  • इस हमले का लक्ष्य एक विशिष्ट पते पर एक चंक को आवंटित करने की क्षमता होती है।

आवश्यकताएँ

  • एक ओवरफ्लो जो शीर्ष चंक हेडर का आकार अधिलेखित करने की अनुमति देता है (उदा. -1)।
  • हीप आवंटन का आकार नियंत्रित करने की क्षमता होना

हमला

यदि एक हमलावर किसी पते P पर एक चंक आवंटित करना चाहता है ताकि यहाँ का कोई मान अधिलेखित हो। वह -1 के साथ शीर्ष चंक का आकार अधिलेखित करके शुरू करता है (शायद एक ओवरफ्लो के साथ)। यह सुनिश्चित करता है कि malloc किसी भी आवंटन के लिए mmap का उपयोग नहीं करेगा क्योंकि शीर्ष चंक में हमेशा पर्याप्त स्थान होगा।

फिर, शीर्ष चंक के पते और लक्ष्य स्थान के बीच की दूरी की गणना करें ताकि आवंटन के लिए उस आकार के साथ malloc किया जाए जिससे शीर्ष चंक उस स्थिति पर ले जाने के लिए किया जाए। यह अंतर/आकार आसानी से गणित किया जा सकता है:

// From https://github.com/shellphish/how2heap/blob/master/glibc_2.27/house_of_force.c#L59C2-L67C5
/*
* The evil_size is calulcated as (nb is the number of bytes requested + space for metadata):
* new_top = old_top + nb
* nb = new_top - old_top
* req + 2sizeof(long) = new_top - old_top
* req = new_top - old_top - 2sizeof(long)
* req = target - 2sizeof(long) - old_top - 2sizeof(long)
* req = target - old_top - 4*sizeof(long)
*/

इसलिए, target - old_top - 4*sizeof(long) का आकार आवंटित करना (4 longs क्योंकि शीर्ष चंक और नए चंक के मेटाडेटा के कारण) शीर्ष चंक को हमें ओवरराइट करने के लिए चाहिए वाले पते पर ले जाएगा।
फिर, एक और malloc करें ताकि डेटा की शुरुआत में एक चंक प्राप्त करें जिसमें लिखने के लिए लक्षित पते को।