يتم اقتطاع SHELLCODE بواسطة x20
سؤال
لماذا يتم اقتطاع رمز الصدفة الخاص بي بعد \x20
OpCode ، عندما يتم نسخه بواسطة String للتكديس في برنامج ضعيف ثانٍ؟
--cmd.exe-- char shell[]= "\xc7\x44\x24\x0c\x65\x78\x65\x20" ← only this line is put in stack, though hv a enough space "\xc7\x44\x24\x08\x63\x6d\x64\x2e" "\x31\xc0" "\x89\x44\x24\x04" "\x8d\x44\x24\x08" "\x89\x04\x24" "\x8d\x05\xad\x23\x86\x7c" "\xff\xd0"; --end shell--
المحلول
هل تمر هذه الرمز القذيف كوسيطة سطر الأوامر؟ في هذه الحالة ، ألقِ نظرة على رمز ASCII لـ 0x20 ؛)
نصائح أخرى
نظريتي هي أن أشياء مثل الاقتباس والمساحة والخالية ، إلخ يتم تفسيرها بواسطة قذيفة Windows بدلاً من إرسالها. يمكنك الهروب من ذلك بطريقة أو بأخرى ، لكنني أعتقد أنه من الأسهل تشفير رمز الصدفة. لذا ، جرب الأداة المساعدة Metasploit من MSFENCODE لتجنب الرموز المطلقة تمامًا. أعرف أنه لا يمكن تمرير NULL (/x00) ، والفضاء (/x20) و QUOTE (/x22) مباشرة ، لكنني أفترض أن هناك رموز opcshes الأخرى التي لا يمكن تمريرها أيضًا.
هذا هو الحل الخاص بي ، لكن هل يعرف أي شخص أي شخص آخر أفضل؟
ضع اقتباسات مزدوجة حول الأمر بأكمله. على سبيل المثال ، قم بتشغيل:
"$shellcode" (gdb)r "$(python -c 'print "\x41" * 100 + "\x20\x83\x04\x08" + ....')"