Ret2ret & Reo2pop
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
इस तकनीक का मुख्य लक्ष्य स्टैक में एक मौजूदा पॉइंटर का दुरुपयोग करके ASLR को बायपास करने की कोशिश करना है।
बुनियादी रूप से, स्टैक ओवरफ्लो आमतौर पर स्ट्रिंग्स के कारण होते हैं, और स्ट्रिंग्स मेमोरी में अंत में एक नल बाइट के साथ समाप्त होती हैं। यह मौजूदा पॉइंटर द्वारा इंगित स्थान को कम करने की कोशिश करने की अनुमति देता है। इसलिए यदि स्टैक में 0xbfffffdd
था, तो यह ओवरफ्लो इसे 0xbfffff00
में बदल सकता है (अंतिम शून्य बाइट को नोट करें)।
यदि वह पता हमारे शेलकोड की ओर इंगित करता है, तो ret
निर्देश में पते जोड़कर उस पते तक पहुंचने के लिए प्रवाह को बनाना संभव है जब तक कि यह नहीं पहुंच जाता।
इसलिए हमला इस तरह होगा:
NOP स्लेड
शेलकोड
ret
के लिए पते के साथ EIP से स्टैक को ओवरराइट करें (RET स्लेड)
0x00 जो स्ट्रिंग द्वारा स्टैक से एक पते को संशोधित करके NOP स्लेड की ओर इंगित करता है
इस लिंक का पालन करते हुए आप एक कमजोर बाइनरी का उदाहरण देख सकते हैं और इसमें एक्सप्लॉइट।
यदि आप स्टैक में एक परफेक्ट पॉइंटर पा सकते हैं जिसे आप संशोधित नहीं करना चाहते (ret2ret
में हम अंतिम सबसे कम बाइट को 0x00
में बदलते हैं), तो आप वही ret2ret
हमला कर सकते हैं, लेकिन RET स्लेड की लंबाई को 1 से कम करना होगा (ताकि अंतिम 0x00
परफेक्ट पॉइंटर से ठीक पहले के डेटा को ओवरराइट करे), और RET स्लेड का अंतिम पता pop <reg>; ret
की ओर इंगित करना चाहिए।
इस तरह, परफेक्ट पॉइंटर से पहले का डेटा स्टैक से हटा दिया जाएगा (यह डेटा 0x00
से प्रभावित होता है) और अंतिम ret
बिना किसी परिवर्तन के स्टैक में परफेक्ट पते की ओर इंगित करेगा।
इस लिंक का पालन करते हुए आप एक कमजोर बाइनरी का उदाहरण देख सकते हैं और इसमें एक्सप्लॉइट।
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)