Ret2ret & Reo2pop

हैकट्रिक्स का समर्थन करें

Ret2ret

इस तकनीक का मुख्य लक्ष्य ASLR को उल्लंघन करने का प्रयास करना है जिसमें स्टैक में मौजूद एक पॉइंटर का दुरुपयोग किया जाता है।

मूल रूप से, स्टैक ओवरफ्लो आम तौर पर स्ट्रिंग्स द्वारा होता है, और स्ट्रिंग्स के अंत में एक नल बाइट होता है। यह यह संभव बनाता है कि स्टैक में मौजूद एक पॉइंटर द्वारा दर्शित स्थान को कम करने का प्रयास किया जाए। इसलिए यदि स्टैक में 0xbfffffdd था, तो यह ओवरफ्लो इसे 0xbfffff00 में बदल सकता है (अंतिम ज़ीरो बाइट का ध्यान दें)।

यदि वह पता हमारे शैलकोड को स्टैक में दर्शाता है, तो इसे ret इंस्ट्रक्शन में पते जोड़कर इसे पहुंचाना संभव है जब तक यह पहुंच जाए।

इसलिए हमला इस प्रकार होगा:

  • NOP स्लेड

  • शैलकोड

  • EIP से स्टैक को ओवरराइट करें ret के पतों को जोड़ें (RET स्लेड)

  • स्ट्रिंग द्वारा जोड़ा गया 0x00, स्टैक से एक पते को संशोधित करके इसे NOP स्लेड की ओर इशारा करना

इस लिंक पर एक वंलरेबल बाइनरी का उदाहरण देख सकते हैं और इसमें एक्सप्लॉइट देख सकते हैं।

Ret2pop

यदि आप स्टैक में एक उत्कृष्ट पॉइंटर खोज सकते हैं जिसे आप संशोधित नहीं करना चाहते (ret2ret में हमने अंतिम सबसे कम बाइट को 0x00 में बदल दिया था), तो आप एक ही ret2ret हमला कर सकते हैं, लेकिन RET स्लेड की लंबाई को 1 से कम करना होगा (ताकि अंतिम 0x00 उत्कृष्ट पॉइंटर से पहले के डेटा को ओवरराइट करे), और RET स्लेड का अंतिम पता pop <reg>; ret की ओर इशारा करना होगा। इस प्रकार, उत्कृष्ट पॉइंटर से पहले का डेटा स्टैक से हटा दिया जाएगा (यह डेटा 0x00 द्वारा प्रभावित होता है) और अंतिम ret उत्कृष्ट पते की ओर इशारा करेगा बिना किसी बदलाव के।

इस लिंक पर एक वंलरेबल बाइनरी का उदाहरण देख सकते हैं और इसमें एक्सप्लॉइट देख सकते हैं।

संदर्भ

हैकट्रिक्स का समर्थन करें

Last updated