Ret2plt
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)
इस तकनीक का लक्ष्य PLT से एक फ़ंक्शन का पता लीक करना होगा ताकि ASLR को बायपास किया जा सके। इसका कारण यह है कि यदि, उदाहरण के लिए, आप libc से puts
फ़ंक्शन का पता लीक करते हैं, तो आप libc
का बेस कहां है यह गणना कर सकते हैं और अन्य फ़ंक्शनों जैसे system
तक पहुँचने के लिए ऑफसेट्स की गणना कर सकते हैं।
यह pwntools
पेलोड के साथ किया जा सकता है जैसे कि (यहां से):
ध्यान दें कि puts
(PLT से पते का उपयोग करते हुए) को GOT (ग्लोबल ऑफसेट टेबल) में स्थित 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 सक्षम, कोई कैनरी नहीं, एक चाइल्ड फंक्शन से मेन में स्टैक ओवरफ्लो। GOT से puts के पते को लीक करने के लिए puts को कॉल करने के लिए ROP गैजेट और फिर एक गैजेट को कॉल करें।
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)