Ret2ret & Reo2pop

Reading time: 3 minutes

tip

AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)

HackTricks का समर्थन करें

Ret2ret

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

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

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

इसलिए हमला इस तरह होगा:

  • NOP स्लेड
  • शेलकोड
  • ret के लिए पते के साथ EIP से स्टैक को ओवरराइट करें (RET स्लेड)
  • 0x00 जो स्ट्रिंग द्वारा स्टैक से एक पते को संशोधित करके NOP स्लेड की ओर इंगित करता है

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

Ret2pop

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

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

References

tip

AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)

HackTricks का समर्थन करें