Page 79 - بسم الله الرحمن الرحيم
P. 79

‫محتويات الدرس‪:‬‬

                                                                  ‫‪ -1‬ما هو الـ ‪ Buffer Overflow‬؟‬
                                                                            ‫<‪--------------------------‬‬

                                                                             ‫‪ -2‬المعالجه)‪(Proccess‬‬
                                                                                     ‫<‪-----------------‬‬

                                                      ‫‪ -3‬إدارة الذاكره )‪(Memory management‬‬
                                                                      ‫<‪--------------------------------‬‬

                                                          ‫‪-4‬استغلل ماذكر في الـ ‪Buffer Overflow‬‬
                                                                    ‫<‪----------------------------------‬‬

                                                           ‫* ماذا يجب أن أعرف قبل أن أقرأ هذه المقالة؟‬
  ‫ليس الكثير‪ ،،،‬فهذا دليل اساسي لك اذن فقط تصحتاج ان تصكون لديك معرفة أساسية بمفهو‪.‬م برامج الحاسوب‬

                                                                                          ‫وإدارة الذاكرة‬

                                                                    ‫‪-1‬ما هو الـ ‪Buffer Overflow‬؟‬
                                                                             ‫<‪>-----------------------‬‬

        ‫‪ Buffer Overflow‬حالة تصحدث لبرنامج بسبب برمجة سيئة أو بمعنى اختر برمجة تصحمل أختطاء‪.‬‬
 ‫احدث ثغرة يمكنك أستغللها من نوع ‪ Buffer Overflow‬تصسمى فايروس '‪ ، 'code red‬التي أستغلت‬

                                                    ‫في ختاد‪.‬م ‪ IIS‬لمايكروسوفت ‪- MS web server-‬‬
‫عموما‪ ،‬يحدث ‪ Buffer Overflow‬عندما يظهر برنامج ما متغ ّير بحجم ثابت )على سبيل المثال‪،‬حجم ‪20‬‬

                                      ‫بايت( و القيمة التي خت  صّصت إلى هذه المتغ يّر أكبر من حجم المتغ يّر‪.‬‬

                                                                                          ‫ختذ هذا المثال‪:‬‬
     ‫يظهر برنامجي على الشاشة هذه الجملة‪" :‬رجهاء إطبع اسمك الول‪" :‬ثم سيأختذ برنامجي من المستخد‪.‬م‬

               ‫البيانات التي سيدختلها وهي )اسمه الول( ثم تصوضع في متغير فتظهر في برنامجي او تصخزن‪.‬‬
‫المشكلة هنا تصكمن في انه إذا كان المتغ ّير مخصص لتخزين بيانات حجمها القصى يساوي ‪ 15‬بايت والبيانات‬

   ‫هنا)وهي اسم المستخد‪.‬م(حجمها ‪ 25‬بايت التي ستخزن في المتغير )يتضح لنا ان اسم المستخد‪.‬م وضع في‬
                                                                                  ‫مكان اقل من حجمه (‪.‬‬

  ‫اذن ماذا سيحدث للبيانات الزائدة عن ‪ 15‬بايت من المؤكد انها سـ"تصطفح ‪ "Overflow‬على الذاكرة التي‬
                                                                                  ‫خت  صّصت لمتغ يّر السم‪.‬‬

                                                                  ‫عندما يبدأ البرنامج‪ ،‬تصخ  صّص الذاكرة ‪:‬‬
                                 ‫>‪<var1><var2><vname><Other things in memory‬‬

                                                                                        ‫‪10b 6b 15b‬‬
       ‫)‪ var 1‬و ‪ var 2‬متغ ّيرات ليست لها علقة بالسم المدختل ‪ vname,‬المتغ يّر الذي حجمه ‪ 15‬بايت‬

                                                       ‫وهو الذي سيحتوي السم الذي سيدختله المستخد‪.‬م(‬

                        ‫نفترض ان المستخد‪.‬م سيدختل السم " ‪abcabcabcabcabcabcabcabca‬‬
                                                                         ‫‪ "bc‬حينها ستبدو الذاكره هكذا‪:‬‬

                                                             ‫‪somevalue2avalusabcabcabc‬‬
                                                                         ‫‪abcabcabcabcabcabc‬‬

                                     ‫>‪<var1 ><var2><vname ><other things go here‬‬

 ‫اذا ماذا حدث ؟؟ المتغ يّر ‪" vname‬طفح ‪ "overflowed‬بسبب البيانات المدختلة عليه من قبل المستخد‪.‬م‬

                                                  ‫‪79‬‬
   74   75   76   77   78   79   80   81   82   83   84