2011-03-13 22 views
7

आमतौर पर हम सभी बुनियादी बफर अतिप्रवाह प्रारूप जो है देखें: - NOPs + shellcode + return_addressबफर अतिप्रवाह हमले प्रारूप

हम प्रयोग क्यों न, NOPs + return_address + shellcode? जहाँ हम shellcode के शुरू करने के वापसी पता बिंदु बनाने के?

मुझे लगता है कि ऐसा इसलिए है क्योंकि यदि हम भेद्यता मुख्य() में हैं तो हम स्टैक सेगमेंट के बाहर डेटा लिखने की कोशिश कर रहे हैं। क्या मैं सही हू? यदि मैं हूं, तो क्या यही कारण है?

ओह, और हाँ, मैं अन्य प्रकार के हमलों का जिक्र नहीं कर रहा हूं जो रिटर्न-टू-लीबक, पीआरटीई इत्यादि का उपयोग करते हैं; मैं सिर्फ यह जानना चाहता हूं कि क्यों सबसे बुनियादी बफर ओवरफ्लो हमला पहली बार प्रदर्शित होता है, न कि दूसरी जगह।

उत्तर

10

वापसी पता shellcode+nop sled से पहले या बाद में आ सकता है। उदाहरण के लिए यदि आप स्टैक्स के शीर्ष पर एक चर के लिए लिख रहे हैं तो आपको रिटर्न पता (ईआईपी) के पीछे अपना nop sled+shell code लिखना पड़ सकता है क्योंकि पर्याप्त जगह नहीं हो सकती है।

हालांकि, एनओपी स्लेज हमेशा शेल कोड के बगल में होगा। इसका कारण यह है कि आप अपने शेल कोड का लक्ष्य जितना संभव हो उतना बड़ा बनाने के लिए एक एनओपी स्लेज का उपयोग करते हैं। यदि आपका ईआईपी आपके शेल कोड से + = 100 बाइट इंगित कर रहा है तो आपको 100 से अधिक बाइट्स के एक एनओपी स्लेज का उपयोग करने की आवश्यकता है ताकि आप यह सुनिश्चित कर सकें कि आप अपना लक्ष्य हिट करेंगे। इस प्रकार NOPs + return_address + shellcode अमान्य है। एक आम का फायदा उठाने स्ट्रिंग इस तरह दिखेगा:

JUNK + return_address + NOPs + shellcode

और निश्चित रूप से एक "return-to-libc" शैली के हमले shellcode या एक nop स्लेज आवश्यकता नहीं है।

यह सरल स्टैक-आधारित बफर ओवरफ़्लो शोषण आधुनिक प्रणाली पर काम नहीं करेगा। एल्फे-वन की स्मैशिंग द स्टैक फॉर फन एंड प्रॉफिट अब एनएक्स जोन्स, स्टैक कैनरी और एएसएलआर की वजह से काम नहीं करती है, जिनमें से सभी विंडोज और लिनक्स पर डिफ़ॉल्ट हैं। अपने विस्तृत जवाब के लिए

enter image description here

+2

धन्यवाद:

आप की एक प्रति लेने चाहिए! –

संबंधित मुद्दे