Ret2plt
AWS हैकिंग सीखें और अभ्यास करें: HackTricks प्रशिक्षण AWS रेड टीम विशेषज्ञ (ARTE) GCP हैकिंग सीखें और अभ्यास करें: HackTricks प्रशिक्षण GCP रेड टीम विशेषज्ञ (GRTE)
मौलिक जानकारी
इस तकनीक का लक्ष्य होगा कि PLT से किसी फ़ंक्शन का पता लगाएं ताकि ASLR को उम्मीद से भी आगे बढ़ा सकें। यह इसलिए है क्योंकि यदि आप, उदाहरण के लिए, puts
फ़ंक्शन का पता लीक करते हैं libc से, तो फिर आप libc
का बेस कहाँ है उसे गणना कर सकते हैं और अन्य फ़ंक्शनों तक पहुँचने के लिए ऑफ़सेट की गणना कर सकते हैं जैसे कि system
।
यह pwntools
पेलोड के साथ किया जा सकता है जैसे (यहाँ से):
नोट करें कि puts
(PLT से पते का उपयोग करके) puts
का पता गोट (ग्लोबल ऑफसेट टेबल) में स्थित puts
के पते के साथ किया जाता है। यह इसलिए है क्योंकि puts
जब puts
का GOT एंट्री प्रिंट करता है, तो यह एंट्री मेमोरी में puts
का सटीक पता रखेगी।
इसके अलावा, ध्यान दें कि एक्सप्लॉइट में main
का पता उपयोग किया जाता है ताकि puts
अपने निष्पादन को समाप्त करने पर बाइनरी main
को फिर से बुलाए (ताकि लीक हुआ पता वैध रहे)।
ध्यान दें कि इसे काम करने के लिए बाइनरी को PIE के साथ कंपाइल नहीं किया जा सकता या आपको PIE को बाइपास करने के लिए लीक पाना होगा ताकि PLT, GOT और main का पता पता चले। अन्यथा, आपको पहले PIE को बाइपास करना होगा।
आप यहाँ इस बाइपास का पूर्ण उदाहरण देख सकते हैं। यह उस उदाहरण का अंतिम एक्सप्लॉइट था।
अन्य उदाहरण और संदर्भ
64 बिट, ASLR सक्षम है लेकिन PIE नहीं है, पहला कदम है कि एक ओवरफ्लो को भरना है जब तक कैनेरी का बाइट 0x00 तक न पहुंच जाए और फिर puts को कॉल करें और इसे लीक करें। कैनेरी के साथ एक ROP गैजेट बनाया जाता है जिससे puts को कॉल करने के लिए GOT से puts का पता लीक होता है और फिर
system('/bin/sh')
को कॉल करने के लिए एक ROP गैजेट।64 बिट, ASLR सक्षम है, कोई कैनेरी नहीं है, मुख्य स्टैक ओवरफ्लो में एक चाइल्ड फ़ंक्शन से। puts को कॉल करने के लिए ROP गैजेट ताकि GOT से puts का पता लीक हो और फिर एक वन गैजेट को कॉल करें।
Last updated