कमजोरीहरूको शोषण गर्न एक नजर

म यस विषयमा छलफल गर्न जारी राख्न अगाडि हेर्दै थिएँ, मँ तपाईंलाई ईतिहास, सिद्धान्त र जोखिममा अभ्यासको एक थोरै बताउँछु। हामी सबैले सुनेका छौं कि सुरक्षा खामाहरू धेरै खर्च गर्न सक्दछ, हामी सबैलाई थाहा छ हामीले आफ्नो सफ्टवेयर अप टु डेट राख्नु पर्छ, हामी सबैलाई थाहा छ कि धेरै अपडेटहरू सुरक्षा बगहरूले गर्दा भएको हो। तर आज म तपाईंलाई यी त्रुटिहरू कसरी फेला पारे र शोषण गर्ने बारेमा छोटो बताउनेछु 🙂 तर यस भन्दा पहिले हामी अझ राम्रा सिंहावलोकन गर्न केही विवरणहरू स्पष्ट पार्दैछौं।

सुरु गर्नु भन्दा पहिले

पहिले म तपाईंलाई यो भन्न चाहन्छु कि हामी पहिलो कमजोर जो मैले शोषण गर्न सिकेको, ज्ञातमा फोकस गर्नेछौं बफर ओभरफ्लोज, यस जोखिममा हामी रमाईलो चीजहरू गर्न मेमोरीमा प्रमाणिकरणको अभावको फाइदा लिन्छौं 🙂 तर हामी यसको बारेमा अझ बढी स्पष्ट पार्दछौं।

यो वास्तविक विश्व परिदृश्य हुने छैन

म तिनीहरूलाई देख्ने कुनै पनि प्रोग्राम तोड्न सिकाउन सक्दिन - पहिलो किनकि यो तिनीहरूको कम्प्युटरहरूको लागि खतरनाक छ, दोस्रो किनकि त्यसले मेरो सामान्य शब्दहरूको कोटा भन्दा बढी लिन्छ।

हामी s० को दशकको यात्रामा जान्छौं

के म तपाईंलाई देखाउँछु कि म मेरो ल्यापटपमा गर्न सक्छु, तर यसको मतलब यो छैन कि यो आज सरल तरीकाले गर्न सकिन्छ can यी अवधारणा मध्ये धेरै पहिले नै धेरै पटक शोषण गरिएको छ कि नयाँ संरक्षण विधि र नयाँ विधिका बाहिर निस्के 😛 तर त्यसले हामीलाई उही ठाउँमा फर्काउँछ, त्यो सबै बताउनको लागि त्यहाँ ठाउँ छैन। 🙂

यो तपाइँको प्रोसेसर मा काम नगर्न सक्छ

यद्यपि म एक धेरै साधारण उदाहरण प्रयोग गर्न जाँदैछु, म यो शुरूबाट नै स्पष्ट देख्न चाहान्छु कि यसका विवरणहरू यति धेरै र यति विविध छन् कि यो मेरो जस्तो बाहिर आउन सक्छ, यदि तपाईं यसलाई प्रयोग गर्न चाहानुहुन्छ भने, अपेक्षित प्रभाव पनि प्राप्त गर्न नसकिने हुन सक्छ। 🙂 तर तपाईं कल्पना गर्न सक्नुहुन्छ कि म यो स्थानमा व्याख्या गर्न सक्दिन, विशेष गरी जब यो परिचय लिएर मैले 300०० भन्दा बढी शब्दहरू लिएकी छु, त्यसैले हामी सीधा हाम्रो कुरामा जान्छौं।

के हो बफर ओभरफ्लो

यसको उत्तर दिनको लागि हामीले यस संयोजनको पहिलो भागलाई बुझ्नु पर्छ।

बफरहरू

किनकि सबै कम्प्युटरमा मेमोरीको बारेमा हो, यो तार्किक छ कि त्यहाँ कुनै प्रकारको जानकारी कन्टेनर हुनुपर्दछ। जब हामी कुरा गर्छौं इनपुटहरू outputs, हामी प्रत्यक्ष अवधारणामा आउँछौं बफरहरू। यसलाई छोटो राख्नको लागि, क बफर यो परिभाषित आकारको मेमोरी स्पेस हो जुन हामी जानकारीको एक सरल भण्डार गर्न गइरहेका छौं

ओभरफ्लोहरू हुन्छन्, नामले देखाउँदा, जब एक बफरले यसलाई समात्न सक्ने भन्दा बढी जानकारीले भर्दछ। तर यो किन महत्त्वपूर्ण छ?

थाक

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

अब जब तपाइँ यी दुई अवधारणाहरू जान्नुहुन्छ, हामीले त्यसलाई क्रमबद्ध गर्नुपर्नेछ। स्ट्याक्सहरू महत्त्वपूर्ण छन् किनकि हामीले चलाउने प्रत्येक प्रोग्रामको आफ्नै आकृति हुन्छ कार्यान्वयन स्ट्याक। तर यो स्ट्याक एक छ विशेष विशेषतातल बढ्छ। केवल तपाईलाई यसको बारेमा जान्न आवश्यक छ कि जब प्रोग्राम चलिरहेको छ, जब प्रकार्य भनिन्छ, स्ट्याक नम्बर X बाट मेमोरीमा नम्बर (Xn) मा जान्छ। तर जारी राख्न हामीले एउटा अर्को अवधारणा बुझ्नुपर्दछ।

पोइन्टरहरू

यो एक अवधारणा हो जुन धेरै प्रोग्रामरहरूलाई पागल बनाउँदछ जब तिनीहरूले सी को दुनिया मा शुरू गर्दछ, वास्तवमा सी प्रोग्रामिंग को महान शक्ति सूचक को उपयोग गर्न को एक अंश को कारण हो। यसलाई सरल राख्नको लागि, एक पोइन्टर एक मेमोरी ठेगानामा इंगित गर्दछ। यो जटिल लाग्न सक्छ, तर यो जटिल छैन, हामी सबै हाम्रो मशीनहरु मा र्याम छ, हैन? खैर, यो a को रूपमा परिभाषित गर्न सकिन्छ ब्लकको लगातार व्यवस्था, यी स्थानहरू सामान्यतया हेक्साडेसिमल संख्यामा व्यक्त हुन्छन् (० देखि then सम्म र त्यसपछि A देखि F सम्म, जस्तै ०x०, ०x१, ०x0, ०xA, ०xF, ०x9)। यहाँ एक जिज्ञासु नोटको रूपमा, ०x१ NO बराबर १० 😛 हुन्छ यदि हामी त्यसलाई दशमलव क्रममा रूपान्तरण गर्छौं भने यो १ saying भने जस्तै हुनेछ। यो त्यस्तो चीज हो जुन सुरुमा एक भन्दा बढि गोलमाल गर्दछ, तर यसमा तल ओर्लौं।

रेकर्डहरू

प्रोसेसरहरु को संख्या संग काम रेकर्ड, जुन भौतिक मेमोरीबाट प्रोसेसरमा स्थान सार्न काम गर्दछ, architect 64-बिट्स प्रयोग गर्ने वास्तुकलाहरूको लागि, रेजिस्टरहरूको संख्या यहाँ वर्णन गर्न ठूलो र गाह्रो छ, तर विचार प्राप्त गर्नका लागि रेजिस्टरहरू पोइन्टर्स जस्ता हुन्छन्, यसले अन्य चीजहरूको बीचमा स indicate्केत गर्दछ। , एक मेमोरी स्पेस (स्थान)।

अब अभ्यास गर्नुहोस्

मलाई थाहा छ कि अहिलेसम्म प्रशोधन गर्नको लागि धेरै जानकारीहरू आएका छन्, तर वास्तवमा तिनीहरू केही जटिल समस्याहरू हुन् जुन मैले सरल तरीकाले बुझाउने प्रयास गर्छु, हामी एउटा सानो कार्यक्रम देखाउँदैछौं जसले बफर प्रयोग गर्दछ र हामी यसलाई भत्काउँछौं ओभरफ्लोको बारेमा यसलाई बुझ्न, स्पष्टतः यो एक होईन। यो एक वास्तविक कार्यक्रम हो, र हामी आज प्रयोग भएका थुप्रै काउन्टरहरू "रोक्न" जाँदैछौं, केवल कसरी पहिले कामहरू गरिएको थियो भनेर देखाउन 🙂 किनकि यी जस्ता केही सिद्धान्तहरू अझ जटिल चीजहरू सिक्नको लागि आवश्यक छ 😉

GDB

निस्सन्देह सी प्रोग्रामरहरूद्वारा धेरै जसो सबैभन्दा धेरै प्रयोग गरिएको हो। यसको धेरै सद्गुणहरू मध्ये यो पनि छ कि यसले हामीलाई यो सबै कुरा देख्न दिन्छ जुन हामीले अहिलेसम्म कुरा गरिरहेका छौं, रेजिस्टरहरू, स्ट्याक, बफरहरू इत्यादि। हामी हाम्रो उदाहरणको लागि प्रयोग गर्न लागेका छौं कि प्रोग्राम हेरौं।

retinput.c

आफ्नै क्रिस्टोफर डियाज रिवरोस

यो एकदम सरल प्रोग्राम हो, हामी लाइब्रेरी प्रयोग गर्ने छौं stdio.h जानकारी प्राप्त गर्न र यसलाई टर्मिनलमा प्रदर्शन गर्न सक्षम हुन। हामी भनिन प्रकार्य देख्न सक्छौं return_input जे उत्पन्न गर्दछ बफर भनिन्छ array, जसको लम्बाई 30० छ बाइट्स (चार डेटा प्रकार १ बाइट लामो छ)।

प्रकार्य gets(array); कन्सोल र प्रकार्य द्वारा जानकारी अनुरोध गर्नुहोस् printf() एर्रेको सामग्री फर्काउँछ र स्क्रिनमा प्रदर्शन गर्दछ।

सीमा लेखिएको प्रत्येक प्रोग्राम प्रकार्यबाट सुरू हुन्छ main(), यो केवल रिटर्न_इनपुट कलिंगको आरोपमा हुनेछ, अब हामी प्रोग्राम कम्पाइल गर्न गइरहेका छौं।

आफ्नै क्रिस्टोफर डियाज रिवरोस

मैले भर्खर के गरेको एक बिट लिन दिनुहोस्। विकल्प -ggdb gcb लाई प्रोग्राम ठीकसँग डिबग गर्न सक्षम हुनको लागि जानकारीको साथ कम्पाइल गर्न बताउँछ। -fno-stack-protector यो एक विकल्प हो जुन स्पष्ट रूपमा हामीले प्रयोग नगरौं, तर हामीले प्रयोग गरिरहेका छौं किनकि अन्यथा स्ट्याकमा बफर ओभरफ्लो उत्पन्न गर्न सम्भव छ। अन्त्यमा मैले नतीजा जाँच गरेको छु। ./a.out मैले भर्खरै कम्पाइल गरेको मात्र चलेँ, यसले जानकारीको लागि सोध्छ र फिर्ता गर्छ। चालु 🙂

चेतावनीहरू

अर्को नोट के तपाईं चेतावनी देख्न सक्नुहुन्छ? स्पष्टतया यो हामीले ध्यानमा राख्नुपर्ने कुरा हो जब हामी कोड वा कम्पाइलको साथ काम गर्छौं, यो केहि स्पष्ट छ र त्यहाँ केहि प्रोग्रामहरू छन् जुन आज समारोहमा छन्। gets() कोडमा। Gentoo को एक फाइदा भनेको प्रत्येक प्रोग्राम कम्पाइल गरेर, म के गलत हुन सक्छ देख्न सक्छु, "आदर्श" प्रोग्राम उनीहरूमा हुनु हुँदैन, तर तपाई आश्चर्यचकित हुनुहुनेछ कि कति ठूला कार्यक्रमहरुमा यी चेतावनीहरू छन् किनकि ती एकदम धेरै ठूला छन् र तिनीहरूलाई ट्र्याक राख्न गाह्रो छ। खतरनाक कार्यहरू जब त्यहाँ एकै समयमा धेरै चेतावनीहरू हुन्छन्। अब हामी जारी भने

कार्यक्रम डिबग गर्दै

आफ्नै क्रिस्टोफर डियाज रिवरोस

अब यो अंश अलि अलमल्याउने हुन सक्छ, तर मैले पहिले नै धेरै लेखेको हुनाले म सबै कुरा व्याख्या गर्न सक्दिन, त्यसैले माफ गर्नुहोस् यदि तपाईंले देख्नुभयो कि म धेरै छिटो जाँदैछु -

कोड निरस्त पार्दै

हाम्रो कम्पाईल गरिएको मेसिन भाषा प्रोग्राम हेरेर सुरु गरौं।

आफ्नै क्रिस्टोफर डियाज रिवरोस

यो हाम्रो मुख्य प्रकार्यको कोड हो सभायो हाम्रो प्रोसेसरले बुझ्ने कुरा हो, देब्रेपट्टि रेखा भनेको स्मृतिको भौतिक ठेगाना हो, जुन <+ n> को रूपमा चिनिन्छ अफसेटमूलतः प्रकार्य (मुख्य) को सुरूवातबाट त्यो कथनको लागि दूरी (जसलाई चिनिन्छ) ओपकोड)। त्यसोभए हामी निर्देशनको प्रकार (पुश / मोभ / कलक…) र एक वा बढी रेजिष्टर्सहरू देख्छौं। संक्षिप्त हामी यो भन्न सक्दछौं कि यो संकेत / स्रोत / गन्तव्य र गन्तव्य द्वारा पछ्याइएको हो। <return_input> हाम्रो दोस्रो समारोह बुझाउँछ, एक नजर हेरौं।

रिटर्न_इनपुट

आफ्नै क्रिस्टोफर डियाज रिवरोस

यो अलि बढी जटिल छ, तर म तपाईं केवल केहि चीजहरू जाँच गर्न चाहानुहुन्छ, त्यहाँ ट्याग भनिन्छ <gets@plt> र एउटा अन्तिम ओपकोड बोलाइयो retq प्रकार्यको अन्त्य सूचित गर्दै। हामी फंक्शनमा दुई ब्रेकपोइन्ट राख्दछौं gets र अर्को मा retq.

आफ्नै क्रिस्टोफर डियाज रिवरोस

चलाउनुहोस्

अब हामी प्रोग्राम कसरी चलाउँछौं भनेर जान्न को लागी कार्य कसरी सुरु हुन्छ।

आफ्नै क्रिस्टोफर डियाज रिवरोस

हामी देख्न सक्छौं कि एउटा सानो एर्रो अपोकोडलाई स op्केत गर्दछ जहाँ हामी छौं, म तिनीहरूलाई दिशातिर लिन चाहन्छु 0x000055555555469b, यो ठेगाना पछि कल हो return_input समारोह मा main , यो महत्वपूर्ण छ किनकि यो जहाँ हुन्छ कार्यक्रम फिर्ता आउनुपर्दछ जब तपाईं प्राप्त गर्न समाप्त गर्नुभयो इनपुट, हामी समारोह मा प्राप्त गरौं। अब हामी प्रकार्य प्रविष्ट गर्नु अघि मेमोरी जानेछौं gets.

आफ्नै क्रिस्टोफर डियाज रिवरोस

मैले तपाईंको लागि मुख्य प्रकार्य फिर्ता राखें, र मैले संकेत गरिरहेको कोडलाई हाइलाइट गरें, किनकि तपाईं देख्न सक्नुहुन्छ, अन्त्य दुई भागमा विभाजित गरिएको छ, म तपाईलाई दिशा मा ध्यान मा लिन चाहन्छु 0x7fffffffdbf0 (कमाण्डो पछि बायाँबाट पहिलो x/20x $rsp) किनकि यो स्थान हो जुन हामीले परिणामहरू जाँच गर्नका लागि प्रयोग गर्नुपर्दछ, अब जारी राख्नुहोस्:

कार्यक्रम तोड्दै

आफ्नै क्रिस्टोफर डियाज रिवरोस

मैले ती हाईलाईट गरेको छु 0x44444444किनकि ती हाम्रो Ds को प्रतिनिधित्व हुन् 🙂 अब हामी थप्न थाल्यौं इनपुट कार्यक्रममा, र तपाईं देख्न सक्नुहुनेछ, हामी हाम्रो चाहिएको ठेगानाबाट दुई लाइनहरू मात्र छौं, हामी यो भर्ने छौं जब सम्म हामी अघिल्लो चरणमा हाइलाइट गरेको ठेगानाहरूको अघि नहुन्जेल।

फिर्ती मार्ग बदल्दै

अब हामी कोडको यो सेक्सन प्रविष्ट गर्न सफल भएका छौं जहाँ यसले प्रकार्यको फिर्ताको स indicates्केत गर्दछ, के हुन्छ हेरौं यदि हामी ठेगाना परिवर्तन गर्छौं भने - ओपकोडको स्थानमा जानुको सट्टा जुन हामीले एक क्षण अघि भएको थियो। तपाईलाई के लाग्छ यदि हामी पछि फर्क्यौं return_input? तर यसका लागि, हामीलाई बाइनरीमा चाहिएको ठेगाना लेख्न आवश्यक छ, हामी यसलाई फंक्शनको साथ गर्न गइरहेका छौं printf bash from बाट

आफ्नै क्रिस्टोफर डियाज रिवरोस

अब हामीले दुई चोटी जानकारी प्राप्त गरिसकेका छौं - निश्चित रूपले प्रोग्राम त्यसका लागि बनाइएको थिएन, तर हामीले कोड तोड्यौं र यसलाई नचाहिने कुरालाई दोहोर्याउँदछौं।

परावर्तन

यो साधारण परिवर्तन लाई मान्न सकिन्छ शोषण धेरै आधारभूत - उसले प्रोग्राम तोड्न मद्दत गरेको छ र हामी उसलाई के गर्न चाहन्छौं भनी केही गर्नलाई छ।

देख्न र थप्ने चीजहरूको लगभग असीम सूचीमा यो केवल पहिलो चरण हो, त्यहाँ अर्डरहरू दोहोर्याउनु भन्दा अझ बढी चीजहरू थप्ने तरिकाहरू छन्, तर यस पटक मैले धेरै लेखेको छु र सम्बन्धित सबै। शेलकोडिंग लेखहरू भन्दा लेख्नको लागि यो विषय हो, पूर्ण पुस्तकहरू जुन मँ भन्छु। माफ गर्नुहोस् यदि मैले विषयवस्तुमा थोरै कुरा प्रस्तुत गर्न सकेनँ जुन मैले मनपराएको थिएँ, तर पक्कै पनि त्यहाँ एक मौका हुनेछ 🙂 अभिवादन र यहाँ आएकोमा धन्यवाद।


लेखको सामग्री हाम्रो सिद्धान्तहरूको पालना गर्दछ सम्पादकीय नैतिकता। त्रुटि क्लिक गर्न रिपोर्ट गर्नुहोस् यहाँ.

२ टिप्पणीहरू, तपाइँको छोड्नुहोस्

तपाइँको टिप्पणी छोड्नुहोस्

तपाईंको ईमेल ठेगाना प्रकाशित हुनेछैन।

*

*

  1. डाटाका लागि उत्तरदायी: मिगुएल gelन्गल ग्याटन
  2. डाटाको उद्देश्य: नियन्त्रण स्पाम, टिप्पणी प्रबन्धन।
  3. वैधानिकता: तपाईंको सहमति
  4. डाटाको सञ्चार: डाटा कानुनी बाध्यता बाहेक तेस्रो पक्षलाई सूचित गरिने छैन।
  5. डाटा भण्डारण: डाटाबेस ओसीन्टस नेटवर्क (EU) द्वारा होस्ट गरिएको
  6. अधिकार: कुनै पनि समयमा तपाईं सीमित गर्न सक्नुहुनेछ, पुन: प्राप्ति र तपाईंको जानकारी मेटाउन।

  1.   2P2 भन्यो

    थप प्रत्यक्ष हुनुहोस्। कम लेख्नुहोस् र केमा महत्त्व राख्दछ त्यसमा ध्यान दिनुहोस्

    1.    क्रिसएडीआर भन्यो

      नमस्ते, टिप्पणीको लागि धन्यवाद।

      सत्य भन्नको लागि मैले विचारहरूको राम्रो भाग काटें, तर त्यसो भए पनि यस्तो लाग्थ्यो कि मैले न्यूनतम छोडिदिएँ ताकि प्रोग्रामिंग ज्ञान नभएको जो कोहीले विचार प्राप्त गर्न सक्छ।

      Saludos

      1.    अज्ञात भन्यो

        समस्या यो हो कि जोसँग प्रोग्रामिंग ज्ञान छैन उनीहरूले केहि पनि फेला पार्दैनन् किनभने यो शुरू गर्न अति जटिल छ, तर जसले प्रोग्रामहरू जान्दछन् उनीहरू अधिक प्रत्यक्ष भएकोमा सराहना गर्छन्।

        मलाई लाग्छ कि तपाईं सबैमा पुग्न सक्नुहुन्न, तपाईले छनौट गर्नुपर्‍यो, र यस केसमा तपाईले पाप गर्नुभयो तपाई धेरै कभर गर्न चाहानुहुन्छ।

        खैर, म तपाईंलाई रचनात्मक आलोचनाको रूपमा भन्छु, मलाई यी शीर्षकहरू मनपर्दछ र म तपाईंलाई लेख लेख्न जारी राख्न चाहन्छु, बधाई छ!

    2.    अज्ञात भन्यो

      मलाई यस्तै लाग्छ

      1.    क्रिसएडीआर भन्यो

        दुबै लाई धेरै धन्यबाद !! लक्ष्य श्रोताको लागि कसरी पुग्ने भन्ने कुरा बुझ्न निश्चित रूपमा गाह्रो छ जब सत्य यो छ कि यी लेखहरू पढ्ने उन्नत स्तरको प्रोग्रामिंग भएका व्यक्तिहरूको संख्या थोरै छ (कम्तिमा पनि टिप्पणीहरूको आधारमा अनुमान गर्न सकिन्छ)

        मैले निश्चित रूपले केहि सरल बनाउन चाहेको बाट पाप गरेको छु जसको लागि विस्तृत ज्ञान आधारलाई बुझ्नु आवश्यक पर्दछ। मलाई आशा छ कि तपाईंले बुझ्नुभयो जुन मैले ब्लगिंगमा सुरू गर्दैछु, मैले अझै त्यस्तो सही बिन्दु पत्ता लगाएको छैन जहाँ मेरो पाठकहरू जान्दछन् र मैले के भनिरहेछु भनेर बुझ्छु। सत्य बोल्न यो सजिलो हुन्छ - 🙂

        म छोटो हुने कोसिस गर्दछु जब यो ढाँचा डिप्रोन्सोलाइज नगरी योग्यता हुन्छ, किनकि सामग्रीबाट लेख्ने तरिकालाई छुट्याउनु भनेको कल्पना गर्न भन्दा अलि जटिल छ, मैले कम्तिमा पनि उनीहरूसँग धेरै लि linked्क गरेको छु, तर म अनुमान गर्छु कि अन्ततः म सक्षम हुनेछु। सामग्री काट्नुको सट्टामा लाइनहरू थप्न।

        Saludos

  2.   मारियो भन्यो

    तपाईं यस विषयको बारेमा अधिक कहाँ पाउन सक्नुहुन्छ? कुनै सिफारिश पुस्तक?

    1.    क्रिसएडीआर भन्यो

      उदाहरण क्रिस एन्ली, जोन हेसमैन, फेलिक्स लिन्डर र जेरार्डो रिचार्तेले द शेलकोडरको ह्यान्डबुकबाट लिएका थिए, तर-64-बिट अनुवाद गर्न मैले मेरो आर्किटेक्चर, इन्टेल डेवलपर म्यानुअल, खण्ड २ र a को बारेमा सिक्नुपर्‍यो। यसको लागि धेरै विश्वसनीय स्रोत। जीडीबी कागजात पढ्न पनि राम्रो हुन्छ, जुन 'इन्फो जीडीबी' कमान्डको साथ आउँदछ, असेंबली र सी सिक्न धेरै धेरै राम्रा किताबहरू छन्, असेंब्ली पुस्तकहरू अलि पुरानो भए बाहेक अर्को प्रकारले भर्ने खालको खाँचो छ। कागजात

      विभिन्न कारणहरूले गर्दा शेलकोड आफै यी दिनहरूमा त्यति प्रभावकारी छैन, तर नयाँ तरिकाहरू सिक्न अझै रोचक छ।

      आशा छ यसले थोरै सहयोग गर्दछ। अभिवादन

  3.   फ्रान्ज भन्यो

    राम्रो लेख, पुरानो ब्लग desdelinux पुनर्जन्म गरिएको छ =)
    जब तपाइँ रिमोट शेल त्यति प्रभावकारी हुनुहुन्न भनेर तपाइँको मतलब आक्रमणलाई कम गर्न डिजाइन गरिएको काउन्टरमेजरहरू हुन्, उनीहरूले यसलाई आपत्तिजनक सुरक्षा भन्छन्।
    अभिवादन र यसलाई जारी राख्नुहोस्

    1.    क्रिसएडीआर भन्यो

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

      धन्यवाद,

  4.   नि: शुल्क सफ्टवेयर भन्यो

    नमस्कार, के तपाइँ शीर्षक विस्तार गर्दै अर्को भाग गर्नुहुनेछ? यो रोचक छ

    1.    क्रिसएडीआर भन्यो

      नमस्कार, विषय पक्कै पनि चाखलाग्दो छ, तर हामी लिने जटिलताको स्तर धेरै उच्च हुने छ, सायद ठूलो संख्यामा पोष्ट सहित बिभिन्न आवश्यकताहरूका व्याख्या गर्न अन्यलाई बुझ्न। म सम्भवतः यसको बारेमा लेख्ने छु, तर यो निम्न पोष्टहरू हुनेछैन, म यसलाई जारी राख्नु अघि केहि शीर्षकहरू लेख्न चाहान्छु।

      अभिवादन, र साझेदारीको लागि धन्यवाद

  5.   कैक्टस भन्यो

    धेरै राम्रो चे! तपाईं उत्कृष्ट पोस्टहरू योगदान गर्दै हुनुहुन्छ! एउटा प्रश्न, म "आईटी सुरक्षा द्वारा कलम परीक्षण द्वारा सुरक्षा आश्वासन" भन्ने पुस्तक पढेर यस सुरक्षालाई सुरू गर्दैछु। के यो पुस्तक सिफारिश गरिएको छ? तपाईं कसरी सुझाव दिनुहुन्छ कि मैले यी मुद्दाहरूको बारेमा सोधपुछ गर्न सुरू गरें?

    1.    क्रिसएडीआर भन्यो

      नमस्ते क्याक्टस, यो कमजोरीहरूको बारेमा एक सम्पूर्ण ब्रह्माण्ड हो, र अरूहरू, सत्य बताउन यो तपाइँको ध्यान खिच्छ केमा निर्भर गर्दछ, र तपाइँको आवश्यकताहरू, एक आईटी प्रबन्धकले कलम-परीक्षकको रूपमा उस्तै कुरा जान्नुपर्दैन, वा जोखिम अनुसन्धानकर्ता, वा फोरेंसिक विश्लेषक, एक प्रकोप रिकभरी टीमसँग धेरै फरक सीपहरू छन्। स्पष्ट रूपमा ती प्रत्येकलाई प्राविधिक ज्ञानको एक फरक स्तर आवश्यक छ, म तपाईंलाई सिफारिश गर्दछु कि तपाईले आफूलाई जस्तो मन पराउनुहुन्छ त्यस्तै खोज्न शुरू गर्नुहोस्, र पुस्तकहरू, लेखहरू र अन्य खाइखोज्न सुरू गर्नुहोस्, र सबैभन्दा महत्त्वपूर्ण कुरा, तपाइँले पढ्नुहुने सबै अभ्यास गर्नुहोस्, यदि यो मिति सकियो भने पनि। , यसले अन्तमा फरक पार्छ।
      धन्यवाद,

  6.   इजेन भन्यो

    नमस्कार!
    यस शीर्षकको व्याख्या गर्नका लागि धेरै धेरै धन्यबाद, थप जानकारीका लागि कि हामीसँग "शेलकोडरको पुस्तिका" छ। मसँग पहिले नै पठन पेन्डि😉 😉