मैं समझता हूँ कि एक ठेठ ढेर आधारित बफर अतिप्रवाह हमले पेलोड इस तरह दिखता है:एक स्टैक आधारित बफर ओवरफ्लो हमले में संशोधित वापसी पता कैसे अनुमानित है?
(वापसी पता) (वापसी पता) ... (वापसी पता) (वापसी पता) (वापसी पता) (वापसी पता) (एनओपी) (एनओपी) (एनओपी) (एनओपी) ... (एनओपी) (एनओपी) (एनओपी) (एनओपी) (shellcode)
मैं भी कि shellcode के सफल निष्पादन को समझने कुछ चीजों पर निर्भर करता है:
- दोहराई जाने वाली वापसी पता पेलोड के भाग है कि ढेर फ्रेम के वापसी सूचक अधिलेखित करने के लिए
- लौट यही पता एनओपी स्लाइड के कुछ हिस्से की पता (या की शुरुआत हो गया है शेलकोड)
मुझे क्या नहीं मिलता है कि इस तकनीक का उपयोग करने वाले मैलवेयर हमेशा इन दो चीजों को सही तरीके से प्राप्त कर सकते हैं। ऐसा लगता है कि एक कामकाजी पेलोड तैयार करने के लिए, हमलावर को लक्ष्य बफर का अनुमानित पता और वापसी पते से इसकी अनुमानित दूरी जाननी है।
क्या ये दोनों आमतौर पर सुंदर निर्धारक हैं? उदाहरण के लिए, यदि हमलावर परीक्षण और त्रुटि के कुछ सत्र करता है जब तक कि वह अपनी मशीन पर काम नहीं करता है, वही पेलोड उसी अन्य बाइनरी के साथ अन्य सभी मशीनों पर काम करेगा?