تحضير المكدس لعملية جديدة - الاختلافات في الدعوة

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

سؤال

لدي تطبيق يشرح سعة المخزن المؤقت المكدس. أود إثارة هجوم العودة إلى LIBC.

يعتمد التدفق العازل على:

int main(int argc, char **argv)
{
[...]
char buff[16];
strcpy(buff,argv[1]);
[...]
}

عندما أسمي هذا التطبيق مباشرة من Shell ، أحصل على خطأ متوقع - مكدس تالف:

[syssec@syssecvm bufov1]$ ./vulnapp hhgfhdsgfsagfzutuewzrqwgfshgafsd
Segmentation fault

ولكن عندما أحاول إعداد الوسيطة في تطبيق آخر (evelyor.c) ، واتصل بالفولناب عبر الاتصال () ، لا يحدث شيء. يقبل Vulnapp حجة أي lenght:

./executor
You executed:./vulnapp 01234567890123450123BBBB�%�/bin/ged�������/
[syssec@syssecvm bufov1]$ 

لا يوجد فساد مكدس في هذه الحالة.

لماذا هو هكذا ؟

هل هناك أي طريقة للحصول على نفس التأثير (تدفق المخزن المؤقت) في حالة الاتصال ()؟

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

المحلول

هناك فساد المكدس. نظام الوظائف () تم الخروج برمز الخطأ على الأرجح 139. لم يلاحظ تطبيقك ذلك لأنه عملية مختلفة.

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