के लिए प्रोग्राम काउंटर नहीं है, मैं किसी दिए गए कमजोर कोड के लिए बफर ओवरफ़्लो आक्रमण करने की कोशिश कर रहा हूं। लेकिन ऐसा लगता है कि यह गलत हो रहा है क्योंकि, हालांकि मेरे शोषण तार स्टैक को भ्रष्ट नहीं करते हैं, लेकिन मुझे अपना असेंबली कोड (शोषण स्ट्रिंग में एम्बेडेड) नहीं मिल सकता है।कोई फ़ंक्शन चयनित फ्रेम
प्रोग्राम के 'रिट' निर्देश के निष्पादन से पहले स्मृति मानों का टुकड़ा यहां है जिसे मैं हमला करना चाहता हूं।
0x55683984: 0x5568398c 0x...(old r.a) 0x68e322a1 0x0000c31c
0x55683994: 0xf7fa9400 0x0804a3d7 0x556839c0 0xf7e518d0
इस बिंदु पर, कोई बात बिगड़ जाए, क्योंकि यह ढेर पॉप नहीं कर सकते हैं और पॉपअप मूल्य के लिए% EIP बिंदु बनाने के? तो मेरा शोषण असेंबली कोड काम नहीं करता है। (0x68e322a1 0x0000c31c) जीडीबी का कहना है कि कोई फ़ंक्शन चयनित फ्रेम के लिए प्रोग्राम काउंटर नहीं है। और जब मैं इसे डिबगिंग के बिना निष्पादित करने का प्रयास करता हूं, तो यह विभाजन खंड का कारण बनता है।
क्या इस समस्या में मेरी असेंबली की लंबाई के साथ कुछ करना है? (इस मामले में यह 6 है)?
Program received signal SIGSEGV, Segmentation fault.
0x5568398c in ??()
(gdb) x 0x5568398c
0x5568398c: 0x68e322a1
यह कैसे हो सकता है जब मैं यह देखने में सक्षम हूं कि पते के अंदर क्या है जो segfault का कारण बनता है?
आप या 'एक्स/10i $ eip' कोड जहां यह segfaulted और देखने के लिए' bt' देखने पर 'disassemble' उपयोग कर सकते हैं कॉल स्टैक। यदि आप जिस कोड को निष्पादित करने का प्रयास कर रहे हैं, उसे दिखाया गया है तो यह मदद करना आसान होगा (यदि यह 68 ई 3 है .. ऐसा लगता है कि इसमें एक शून्य शून्य बाइट एम्बेडेड है)। बीटीडब्लू, अगर यह होमवर्क के लिए है तो आपको इसे इस तरह चिह्नित करना चाहिए। – user786653
मैंने यह देखने के लिए लेआउट एएसएम का उपयोग किया कि क्या हो रहा है और इससे मदद नहीं मिली। इसके अलावा, अब मेरा शोषण कोड एक सी 3 के साथ समाप्त हुआ (जिसका अर्थ है रीट निर्देश), एक शून्य शून्य बाइट कोई समस्या नहीं है। यहां मुख्य बिंदु यह है कि मैं गलती से एक स्मृति पते तक पहुंचने की कोशिश कर रहा हूं जो संभवतः अपरिभाषित है। – bfaskiplar