<summary><strong>जानें AWS हैकिंग को शून्य से हीरो तक</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong> के साथ!</strong></summary>
* यदि आप चाहते हैं कि आपकी **कंपनी HackTricks में विज्ञापित हो** या **HackTricks को PDF में डाउनलोड करें** तो [**सब्सक्रिप्शन प्लान**](https://github.com/sponsors/carlospolop) देखें!
* [**आधिकारिक PEASS और HackTricks स्वैग**](https://peass.creator-spring.com) प्राप्त करें
* हमारे विशेष [**NFTs**](https://opensea.io/collection/the-peass-family) कलेक्शन, [**The PEASS Family**](https://opensea.io/collection/the-peass-family) खोजें
* **शामिल हों** 💬 [**डिस्कॉर्ड समूह**](https://discord.gg/hRep4RUj7f) या [**टेलीग्राम समूह**](https://t.me/peass) या हमें **ट्विटर** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)** पर फॉलो** करें।
* **अपने हैकिंग ट्रिक्स साझा करें, HackTricks** को PRs जमा करके [**HackTricks**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos में।
2.`POP_RDI`, `PUTS_PLT` और `MAIN_PLT` गैजेट्स खोजें
3. पिछले गैजेट्स का उपयोग करके **puts या किसी अन्य libc फ़ंक्शन का मेमोरी पता लीक करें** और **libc संस्करण खोजें** ([इसे डाउनलोड करें](https://libc.blukat.me))
4. पुस्तकालय के साथ, **ROP की गणना करें और इसे एक्सप्लॉइट करें**
यह ट्यूटोरियल उस कोड/बाइनरी को एक्सप्लॉइट करेगा जो इस ट्यूटोरियल में प्रस्तावित किया गया है: [https://tasteofsecurity.com/security/ret2libc-unknown-libc/](https://tasteofsecurity.com/security/ret2libc-unknown-libc/)\
और एक उपयोगी ट्यूटोरियल: [https://made0x78.com/bseries-ret2libc/](https://made0x78.com/bseries-ret2libc/), [https://guyinatuxedo.github.io/08-bof\_dynamic/csaw19\_babyboi/index.html](https://guyinatuxedo.github.io/08-bof\_dynamic/csaw19\_babyboi/index.html)
टेम्पलेट को एक ऑफसेट की आवश्यकता है जिसके बाद एक्सप्लॉइट के साथ जारी रखना है। यदि कोई प्रदान किया जाता है तो यह आवश्यक कोड का निष्पादन करेगा ताकि इसे खोजा जा सके (डिफ़ॉल्ट रूप से `OFFSET = ""`):
**क्रियान्वित** `python template.py` एक GDB कंसोल खुलेगा जिसमें कार्यक्रम क्रैश हो जाएगा। उस **GDB कंसोल** में `x/wx $rsp` क्रियान्वित करें ताकि RIP को ओवरराइट करने वाले **बाइट्स** प्राप्त हों। अंत में एक **python** कंसोल का उपयोग करके **ऑफसेट** प्राप्त करें:
अब हमें बाइनरी के अंदर ROP गैजेट्स खोजने की आवश्यकता है। ये ROP गैजेट्स `puts` को कॉल करने के लिए उपयोगी होंगे **libc** को खोजने के लिए, और बाद में **अंतिम ध्वनि** को लॉन्च करने के लिए।
`MAIN_PLT` को **मुख्य फ़ंक्शन** को फिर से कॉल करने के लिए आवश्यक है एक इंटरेक्शन के बाद **ओवरफ़्लो** को **फिर से शोषित** करने के लिए (असीमित दौरों के शोषण)। **यह प्रोग्राम को फिर से कॉल करने के लिए प्रत्येक ROP के अंत में उपयोग किया जाता है**।\
**POP\_RDI** को **एक पैरामीटर** को बुलाने के लिए आवश्यक है।
अब समय है पता लगाने का कि कौन सी **libc** पुस्तकालय का उपयोग हो रहा है। इसे करने के लिए हमें **फ़ंक्शन**`puts` की **मेमोरी** में **पता** लगाना होगा और फिर हमें देखना होगा कि उस पते पर कौन सी **पुस्तकालय संस्करण** है।
यह कुछ बाइट भेजेगा जब तक **RIP** को **ओवरराइट** करना संभव हो: `OFFSET`।
फिर, यह **POP_RDI** गैजेट का **पता** सेट करेगा ताकि अगला पता (`FUNC_GOT`) **RDI** रजिस्ट्री में सहेजा जाए। यह इसलिए है क्योंकि हमें **puts** को **बुलाना** है जिसे हम **पता** के रूप में `PUTS_GOT` का **पता****पास** करेंगे क्योंकि मेमोरी में puts फ़ंक्शन का पता `PUTS_GOT` द्वारा पॉइंट करने वाले पते में सहेजा जाता है।
उसके बाद, `PUTS_PLT` को बुलाया जाएगा (`RDI` में `PUTS_GOT` के साथ) ताकि puts मेमोरी में `PUTS_GOT` में भीतर की सामग्री पढ़ सके (**मेमोरी में puts फ़ंक्शन का पता**) और इसे **छाप देगा**।
अंत में, **मुख्य फ़ंक्शन को फिर से बुलाया जाता है** ताकि हम फिर से ओवरफ़्लो का शोध कर सकें।
इस तरह हमने **puts फ़ंक्शन को धोखा दिया** है कि वह **मेमोरी** में **puts** फ़ंक्शन का **पता छापेगा** (जो **libc** पुस्तकालय के अंदर है)। अब हमारे पास उस पते के साथ है तो हम **खोज सकते हैं कि कौन सी libc संस्करण का उपयोग हो रहा है**।
हम किसी **स्थानीय** बाइनरी का **शोधन** कर रहे हैं इसलिए यह **आवश्यक नहीं है** कि कौन सा **libc** संस्करण उपयोग हो रहा है (केवल `/lib/x86_64-linux-gnu/libc.so.6` में पुस्तकालय खोजें)।
लेकिन, एक दूरस्थ शोध केस में मैं यहाँ विवरण देता हूँ कि आप इसे कैसे खोज सकते हैं:
इस बिंदु पर हमें यह जानना चाहिए कि कौन सी libc पुस्तकालय का उपयोग हो रहा है। हम एक स्थानीय बाइनरी का शोषण कर रहे हैं इसलिए मैं केवल इस्तेमाल करूंगा: `/lib/x86_64-linux-gnu/libc.so.6`
अंतिम ROP (`rop1`) को फिर से मुख्य फ़ंक्शन को बुलाकर समाप्त किया गया, फिर हम **फिर से शोषण** कर सकते हैं (इसीलिए `OFFSET` यहाँ फिर से है)। फिर, हमें `POP_RDI` को _"/bin/sh"_ (`BINSH`) के **पते** पर पुकारना है और **सिस्टम** फ़ंक्शन (`SYSTEM`) को कॉल करना है क्योंकि _"/bin/sh"_ का पता पैरामीटर के रूप में पास किया जाएगा।\
अंत में, **एक्ज़िट फ़ंक्शन का पता****कॉल** किया जाता है ताकि प्रक्रिया **अच्छे से समाप्त** हो जाए और कोई चेतावनी उत्पन्न न हो।
आप [**ONE\_GADGET** ](https://github.com/david942j/one\_gadget)का उपयोग करके एक शैली प्राप्त करने के लिए एक शैली प्राप्त कर सकते हैं बजाय **सिस्टम** और **"/bin/sh"** का उपयोग करने के। **ONE\_GADGET** एक **ROP पता** का उपयोग करके केवल एक शैली प्राप्त करने के लिए libc लाइब्रेरी के अंदर कुछ तरीका खोजेगा। \
हालांकि, सामान्यत: कुछ प्रतिबंध होते हैं, सबसे सामान्य और आसान टालने वाले वे जैसे हैं `[rsp+0x30] == NULL` जैसे आप **RSP** के मानों को नियंत्रित करते हैं तो आपको बस कुछ अधिक NULL मान भेजना होगा ताकि प्रतिबंध टाला जा सके।
<summary><strong>जानें AWS हैकिंग को शून्य से हीरो तक</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong> के साथ</strong>!</summary>
* अगर आप अपनी **कंपनी का विज्ञापन HackTricks में देखना चाहते हैं** या **HackTricks को PDF में डाउनलोड करना चाहते हैं** तो [**सब्सक्रिप्शन प्लान्स**](https://github.com/sponsors/carlospolop) देखें!
* [**आधिकारिक PEASS & HackTricks स्वैग**](https://peass.creator-spring.com) प्राप्त करें
* हमारे विशेष [**NFTs**](https://opensea.io/collection/the-peass-family) कलेक्शन, [**The PEASS Family**](https://opensea.io/collection/the-peass-family) खोजें
* **शामिल हों** 💬 [**डिस्कॉर्ड समूह**](https://discord.gg/hRep4RUj7f) या [**टेलीग्राम समूह**](https://t.me/peass) या हमें **ट्विटर** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)** पर फॉलो** करें।