WWW2Exec - .dtors & .fini_array
Last updated
Last updated
AWS हैकिंग सीखें और प्रैक्टिस करें:HackTricks प्रशिक्षण AWS रेड टीम एक्सपर्ट (ARTE) GCP हैकिंग सीखें और प्रैक्टिस करें: HackTricks प्रशिक्षण GCP रेड टीम एक्सपर्ट (GRTE)
आजकल किसी भी बाइनरी में .dtors सेक्शन पाना बहुत अजीब है!
डिस्ट्रक्टर्स वे फ़ंक्शन हैं जो प्रोग्राम समाप्त होने से पहले चलाए जाते हैं (जब main
फ़ंक्शन वापस लौटता है)।
इन फ़ंक्शनों के पते बाइनरी के .dtors
सेक्शन में संग्रहीत होते हैं और इसलिए, यदि आप शेलकोड में पते को लिखने में सफल होते हैं __DTOR_END__
, तो वह प्रोग्राम समाप्त होने से पहले चलाया जाएगा।
इस सेक्शन का पता प्राप्त करें:
सामान्यत: आपको DTOR मार्कर के बीच मान ffffffff
और 00000000
के बीच पाए जाएंगे। तो अगर आप सिर्फ उन मानों को देखते हैं, तो इसका मतलब है कि वहाँ कोई फ़ंक्शन रजिस्टर नहीं है। इसलिए 00000000
को शैलकोड के पते से ओवरराइट करें ताकि इसे निष्पादित किया जा सके।
बिल्कुल, पहले आपको शैलकोड को संग्रहित करने के लिए एक स्थान खोजना होगा ताकि आप बाद में इसे बुला सकें।
मूल रूप से यह एक संरचना है जिसमें फ़ंक्शन होते हैं जो कार्यक्रम समाप्त होने से पहले बुलाए जाएंगे, जैसे .dtors
। यह दिलचस्प है अगर आप अपने शैलकोड को बस एक पते पर जाकर बुला सकते हैं, या उन मामलों में जहाँ आपको main
पर वापस जाने की आवश्यकता होती है ताकि आप सुरक्षा दोष का दूसरी बार शारण कर सकें।
.fini_array
का दुरुपयोग करने के लिए एक शाश्वत लूप प्राप्त करने के लिए आप यहाँ क्या किया गया था यह जांच सकते हैं: यदि आपके पास कम से कम 2 प्रविष्टियाँ .fini_array
में हैं, तो आप:
अपनी पहली लेखन का उपयोग करें विकल्पी लेखन कार्य को फिर से बुलाने के लिए
फिर, __libc_csu_fini
द्वारा संग्रहित स्टैक में वापसी पता करें (जो सभी .fini_array
फ़ंक्शन को बुलाने वाला है) और वहाँ __libc_csu_fini
का पता डालें
इससे __libc_csu_fini
खुद को फिर से बुलाएगा और .fini_array
फ़ंक्शन को फिर से बुलाएगा जो विकल्पी WWW फ़ंक्शन को 2 बार बुलाएगा: एक बार के लिए विकल्पी लेखन और एक और बार __libc_csu_fini
के वापसी पते को फिर से ओवरराइट करने के लिए स्टैक पर अपने आप को फिर से बुलाने के लिए.
पूर्ण RELRO** के साथ ध्यान दें,** खंड .fini_array
को केवल पढ़ने योग्य बनाया जाता है। नवीनतम संस्करणों में, [आंशिक RELRO] के साथ खंड .fini_array
को केवल पढ़ने योग्य बनाया जाता है।
AWS हैकिंग सीखें और अभ्यास करें:HackTricks प्रशिक्षण AWS रेड टीम विशेषज्ञ (ARTE) GCP हैकिंग सीखें और अभ्यास करें: HackTricks प्रशिक्षण GCP रेड टीम विशेषज्ञ (GRTE)