كيفية إيقاف تشغيل دول مجلس التعاون الخليجي مترجم الأمثل لتمكين تجاوز سعة المخزن المؤقت

StackOverflow https://stackoverflow.com/questions/2340259

سؤال

أنا أعمل على الواجبات المنزلية المشكلة الذي يتطلب تعطيل مترجم الأمثل الحماية من أجل أن تعمل.أنا باستخدام دول مجلس التعاون الخليجي 4.4.1 على أوبونتو لينكس ، ولكن لا يمكن معرفة أي الأعلام هم الحق.أدركت أنه العمارة يعتمد - الجهاز يعمل ث/ 32-bit Intel المعالج.

شكرا

هل كانت مفيدة؟

المحلول

هذا مشكلة جيدة.من أجل حل هذه المشكلة سيكون لديك أيضا إلى تعطيل ASLR وإلا عنوان ز() سوف تكون غير متوقعة.

تعطيل ASLR:

sudo bash -c 'echo 0 > /proc/sys/kernel/randomize_va_space'

تعطيل الكناري:

gcc overflow.c -o overflow -fno-stack-protector

بعد الخالدات ASLR يتم تعطيل ينبغي أن تكون مستقيمة في الهجوم مثل تلك الموضحة في تحطيم كومة للمتعة والربح

وهنا لائحة من الميزات الأمنية المستخدمة في أوبونتو: https://wiki.ubuntu.com/Security/Features كنت لا داعي للقلق حول NX بت عنوان ز() أن يكون دائما في وضع قابل للتنفيذ المنطقة من الذاكرة لأنه داخل النص الذاكرة الجزء.NX بت فقط إذا كنت تحاول تنفيذ shellcode على كومة أو كومة التي ليست مطلوبة من أجل هذه المهمة.

الآن اذهب وهزم أن EIP!

نصائح أخرى

urm ، الكل من الإجابات حتى الآن كانت مخطئة في إجابة Rook على صحة.

الدخول:

echo 0 | sudo tee /proc/sys/kernel/randomize_va_space

تليها:

gcc -fno-stack-protector -z execstack -o bug bug.c

تعطل ASLR و SSP/Propolen و Ubuntu's Nonexec (الذي تم وضعه في 9.10 ، وبسيطة إلى حد ما للعمل حولها لمشاهدة mprotect (2) يجب أن تساعد تقنية تعيين الصفحات على أنها قابلة للتنفيذ و JMP) قليلاً ، ولكن هذه "ميزات الأمان" ليست معصومة بأي حال من الأحوال. بدون علامة "-Z execstack" ، تحتوي الصفحات على علامات مكدس غير قابلة للتنفيذ.

على التوزيع الأحدث (اعتبارًا من عام 2016) ، يبدو أن PIE قد تم تمكينه افتراضيًا ، لذا ستحتاج إلى تعطيلها بشكل صريح عند التجميع.

إليك ملخصًا صغيرًا للأوامر التي يمكن أن تكون مفيدة عند اللعب محليًا مع تمارين الفائض العازلة بشكل عام:

تعطيل الكناري:

gcc vuln.c -o vuln_disable_canary -fno-stack-protector

تعطيل DEP:

gcc vuln.c -o vuln_disable_dep -z execstack

تعطيل الفطيرة:

gcc vuln.c -o vuln_disable_pie -no-pie

تعطيل جميع آليات الحماية المذكورة أعلاه (تحذير: للاختبار المحلي فقط):

gcc vuln.c -o vuln_disable_all -fno-stack-protector -z execstack -no-pie

للآلات 32 بت ، ستحتاج إلى إضافة -m32 المعلمة كذلك.

جرب ال -fno-stack-protector علَم.

أعلم أنه موضوع قديم ، لكنني أريد أن أشير إلى أنك لست بحاجة إلى تعطيل ASLR من أجل القيام بتدفق عازلة! على الرغم من أنه تم تمكين ASLR (kernel_randomize_va_space = 2) ، فلن يسري مفعوله ما لم يكن المفعول القابل للتنفيذ هو فطيرة ، لذلك ما لم تجمع ملفك بعلم -PPIC -PIE ، لن يصدر ASLR ساري المفعول.

أعتقد فقط أن تعطيل الكناري مع -fno-stack-protector يكفي. إذا كنت ترغب في التحقق مما إذا كان ASLR يعمل أم لا (يجب تعيين الرمز المستقل للموضع) ، فاستخدم: تصلب executable_name

لن أقتبس الصفحة بأكملها ولكن الدليل بالكامل في التحسين متاح هنا: http://gcc.gnu.org/onlinedocs/gcc-4.4.3/gcc/optimize-options.html#optimize-options

من أصواتها التي تريدها على الأقل -O0, والافتراضي ، و:

-fmudflap -fmudflapth -fmudflapir

بالنسبة إلى الواجهة الأمامية التي تدعمها (C و C ++) ، أدوات جميع عمليات إزالة المؤشر/الصفيف المحفوفة بالمخاطر ، وبعض وظائف سلسلة/كومة المكتبة القياسية ، وبعض البنيات الأخرى المرتبطة بها مع اختبارات النطاق/الصلاحية. يجب أن تكون الوحدات النمطية المخصصة محصنة ضد الفائض المخزن المؤقت ، واستخدام كومة غير صالح ، وبعض الفئات الأخرى من أخطاء البرمجة C/C ++. تعتمد الأجهزة على مكتبة وقت تشغيل منفصلة (libmudflap) ، والتي سيتم ربطها ببرنامج إذا تم إعطاء -fmudflap في وقت الارتباط. يتم التحكم في سلوك وقت التشغيل للبرنامج المكون من قبل متغير بيئة MudFlap_Options. انظر Env Mudflap_options = -help A.Out لخياراته.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top