Ret2syscall
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Basic Information
यह Ret2lib के समान है, हालाँकि, इस मामले में हम किसी पुस्तकालय से एक फ़ंक्शन को कॉल नहीं करेंगे। इस मामले में, सब कुछ /bin/sh
निष्पादित करने के लिए कुछ तर्कों के साथ sys_execve
syscall को कॉल करने के लिए तैयार किया जाएगा। यह तकनीक आमतौर पर उन बाइनरी पर की जाती है जो स्थिर रूप से संकलित होती हैं, इसलिए वहाँ बहुत सारे गैजेट और syscall निर्देश हो सकते हैं।
syscall के लिए कॉल तैयार करने के लिए निम्नलिखित कॉन्फ़िगरेशन की आवश्यकता है:
rax: 59 sys_execve निर्दिष्ट करें
rdi: ptr to "/bin/sh" फ़ाइल को निष्पादित करने के लिए निर्दिष्ट करें
rsi: 0 कोई तर्क नहीं दिया गया
rdx: 0 कोई पर्यावरण चर नहीं दिया गया
तो, मूल रूप से, /bin/sh
को कहीं लिखना आवश्यक है और फिर syscall
करना है (स्टैक को नियंत्रित करने के लिए आवश्यक पैडिंग के बारे में जागरूक रहना)। इसके लिए, हमें एक गैजेट की आवश्यकता है जो /bin/sh
को एक ज्ञात क्षेत्र में लिख सके।
एक और दिलचस्प syscall जिसे कॉल किया जा सकता है वह है mprotect
जो एक हमलावर को मेमोरी में एक पृष्ठ की अनुमतियों को संशोधित करने की अनुमति देगा। इसे ret2shellcode के साथ जोड़ा जा सकता है।
Register gadgets
आइए उन रजिस्टरों को नियंत्रित करने के तरीके को खोजने से शुरू करें:
इन पते के साथ स्टैक में सामग्री लिखना और इसे रजिस्टर में लोड करना संभव है।
स्ट्रिंग लिखें
लिखने योग्य मेमोरी
पहले आपको मेमोरी में एक लिखने योग्य स्थान ढूंढना होगा।
Write String in memory
फिर आपको इस पते पर मनचाही सामग्री लिखने का एक तरीका खोजना होगा
ROP श्रृंखला स्वचालित करें
निम्नलिखित कमांड एक स्थिर बाइनरी के लिए पूर्ण sys_execve
ROP श्रृंखला बनाता है जब वहाँ write-what-where गैजेट और syscall निर्देश होते हैं:
32 बिट्स
64 बिट्स
Gadgets की कमी
यदि आप gadgets की कमी महसूस कर रहे हैं, उदाहरण के लिए /bin/sh
को मेमोरी में लिखने के लिए, तो आप स्टैक से सभी रजिस्टर मानों (जिसमें RIP और params रजिस्टर शामिल हैं) को नियंत्रित करने के लिए SROP तकनीक का उपयोग कर सकते हैं:
Exploit उदाहरण
अन्य उदाहरण और संदर्भ
64 बिट, कोई PIE नहीं, nx, कुछ मेमोरी में
execve
कॉल करने के लिए एक ROP लिखें और वहां कूदें।64 बिट, nx, कोई PIE नहीं, कुछ मेमोरी में
execve
कॉल करने के लिए एक ROP लिखें और वहां कूदें। स्टैक में लिखने के लिए गणितीय संचालन करने वाले एक फ़ंक्शन का दुरुपयोग किया जाता है।64 बिट, कोई PIE नहीं, nx, BF कैनरी, कुछ मेमोरी में
execve
कॉल करने के लिए एक ROP लिखें और वहां कूदें।
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Last updated