بتاريخ: 19 مارس 200520 سنة comment_30052 --------------------------------------------------------------------------------سلاااااااام عليكم ورحمة الله وبركاته ..نظرا لانتشار ثغرات sql injection وسهوله اكتشافها ..... لابد نعطي فكره عن الــSQL لكي يتمكن الكل من كتابه استثمار لهذه الثغرات ..راح ابدا بالتدرج وان شالله علي قد مايسمح الوقت نكتب ..ماهي :Structured Query Language لغه الاستعلام البنائيه تسمح لك بدخول قواعد البيانات وتنفيذ استعلامات عليها وهي لغه معياريه لــANSI .مميزاتها :1- تمكنك من تنفيذ استعلامات علي قواعد البيانات 2-ادراج ريكورد (صفوف) الي جدول ما3-حذف ريكورد من جدول ما4- تحديث ريكورد من جدول ما 5- سهله التعلم كبدايه يجب ان تفهم ان قواعد البيانات مكونه من جداول الجدول يحتوي علي صفوف الصف يسمي ريكورد ويحتوي علي بيانات ..... لاتنسي ان الجدول يعرف باسمه .ارسم علي ورقه قدامك جدول اسمة (خوياي) خليه اربع اعمده الاول اسمه الثاني ابوه الثالث تلفونه الرابع مدينته .اوكيه خلي الجدول يحتوي علي ثلاث ريكورد وادخل في كل ريكود معلومات واحد من خوياك نفرض ان الجدول التالي تكون :=========================اسمه | ابوه | تليفونه | مدينتهاحمد | محمد | 555 | نواكشوط يونس |شلبي | 545 | الجيزهريم | موسي |878 | دلهي =========================افرض انه جدول بقاعده بيانات وتبي تنفذ بعض الاستفسارات عن طريق SQL ......مثالتبي تستفسر عن جميع اسماء خوياك .اكيد راح تقول : اختر العامود اسمه من الجدول اخوياي ....... والاستعلام هذا راح يرجعلك كل اسماء خوياك كيف هي صيغه SQL للامر اللي كتبنا ....كالتالي : select column from table طبعا column كان باستعلامنا (اسمه) والــtable (اخوياي ) ...... شفت سهله كيف ؟---------------------الان الــDML جزء من الــSQL وتعني Data Manipulation Language وهي اوامر الاستعلام والتحديث والادراج والحذف في لغه SQL اوامرها :SELECT استعلام جدول معين وعرض النتيجه UPDATE تحديث الجداول في قاعده البيانات DELETE حذف بيانات من جدول ما INSERT INTO ادخال بيانات جديده لجدول ما --------------------وفيه الــDDL وتعني Data Definition Language وهي جزء من SQL مسوول عن انشاء وحذف الجداول في قاعده البيانات كما يتم من خلالها انشاء الفهارس وتحديد الروابط بين الجداول اوامرها :CREATE TABLE انشاء جدول ALTER TABLE تغيير جدول DROP TABLE حذف جدول CREATE INDEX انشاء فهرس DROP INDEX حذف فهرساولاااا :SELECT استخدامه : اختيار بيانات من جدول معين كود: SELECT column_names FROM table_name شرح :column_names ممكن يكون عامود واحد او عده اعمده table_name اسم جدول في قاعده البيانات سوال : من جدول (اخوياي) استعلم عن الاعمده (ابوه + رقمه) عن طريق اوامر SQL ?كذلك تستطيع استبدال اسم العمود بــ (*) نجمه لاختيار جميع الاعمده ملاحظه : اضافه الفاصله المنقوطه بعد الــ SQL statement تمكنك من كتابه اكثر من استعلام علي نفس السطر معياريا لا يجب وضع فاصله منقوطه بعد كل SQL statement لكن تم الاعتياد علي هذا الشي فحاول انك تتعود علي وضعها بعد كل SQL statement حتي لو كانت وحدها في السطر ==============الان SELECT DISTINCT نفس SELECT بس الفرق انه تمنع تكرار النتائج يعني اذا تطابقت نتيجتين تظهر وحده بس ==============الان WHERE Clause تضاف لــSELECT لاختيار قيم تستوفي شروط معينه صيغته كود: SELECT column FROM table WHERE column operator value operator يكون واحد من التالي := يساوي <> لايساوي > اكبر من < اصغر من >= اكبر من او يساوي<= اصغر من او يساوي BETWEEN بين حدي نطاق معطي LIKE مشابه لتخطيط معين اوكيه تدريب اخر : من جدول (اخوياي) وباستعمال where حدد اقصر اسم في العامود (اسمة)؟ملاحظه : الــvalue اذا كانت حرفيه يجب احاطتها بفواصل وفي بعض انظمه قواعد البيانات بفاصله مزدزجه اما الرقميه فلا تحاط بفواصلكلمة اخيره عن like تستطيع تحديد المخططات بالعلامه % يعني اذا تبي شي فيه الحرفين Op تستخدم %op % ادراج ريكورد (صف) جديد الي جدول صيغته : INSERT INTO table_name VALUES (value1, value2,....) وتقدر تحدد الاعامود اللي بتدرج فيه المعلومات بالصيغه التاليه : INSERT INTO table_name (column1, column2,...) VALUES (value1, value2,....) ===========================الان جاء دور الستيتمنت update استخدامه : لتعديل قيم موجوده في جدول معين وتحديثها صيغتها UPDATE table_name SET column_name = new_value WHERE column_name = some_value =========================الان Delete استخدامه :حذف ريكورد من جدول صيغته :كود: DELETE FROM table_name WHERE column_name = some_value ========================بكذا اكون القيت الضوء علي ابرز الـstatement في الـSQL واللي راح تمكنك من فهم اي استعلام عند رويته .. تقديم بلاغ
بتاريخ: 19 مارس 200520 سنة comment_30130 شكرا لك اخي علي هذا الشرح السريع في انتظار مشاركات افضل قريبامع تمنياتي بالتوفيق تقديم بلاغ
بتاريخ: 20 مارس 200520 سنة كاتب الموضوع comment_30146 بناء على طلب الكثيرين ممن تواجههم هذه التساؤلات حال استخدامهم لتعليمات SQL في التعامل مع قواعد بيانات باللغة العربية كتبت فيما يلي ما حضر إلى ذهني من التلميحات التي أعتقد أنها ستكون مفيدة: - لن أقوم هنا بشرح طريقة استخدام SQL، لمن يرغب في معرفة لغة SQL للتعامل مع قواعد البيانات أرجو زيارة الموقع http://www.mysql.com/doc/en/index.html (فيما يخص MySQL)تأسيس الجدول ليناسب اللغة العربية حروف اللغة العربية تعتبر من تلك الرموز الغير قياسية والتي تتجاوز قيمتها الرقمية في جدول ASCII الرقم 127، وبالتالي فإنها لا تعامل معاملة الحروف الهجائية مثلها مثل حروف اللغة الإنجليزية، لذلك فإن تأسيس جدول قاعدة بيانات يجب أن يتضمن تحديد صفة الثنائية BINARY للحقول التي ستحتوي على بيانات باللغة العربية، وإن كان ذلك غير ممكن لسبب ألآخر (كأن تكون الجداول قد تم تأسيسها فعلاً) فيمكن الاطلاع على التلميحات التالية والتي يمكن بواسطتها تجاوز هذه المشكلة. ترتيب بيانات باللغة العربية أثناء العرض يواجه العديد هذه المشكلة أثناء استخدامهم لتعليمة ORDER BY في ترتيب بيانات باللغة العربية (في جداول لم يتم استخدام صفة الثنائية) حيث أنهم يفاجؤن بظهور ترتيب الصفوف بشكل غير متوقع، حيث تظهر بعض حروف اللغة العربية في غير ترتيبها الصحيح، والسبب في ذلك كما ذكرنا من قبل أن العمود المستخدم لم يتصف بالثنائية BINARY، لذلك فإننا يجب أن نقوم بالتخصيص أثناء الترتيب كما في المثال التالي:SQL SELECT * FROM table ORDER BY BINARY field حيث ان اسم الجدول table والحقل الذي يتم الترتيب بدلالته هو field، وقد تمت إضافة BINARY قبله حتى يتم تنبيه MySQL أن بيانات الحقل يجب أن تعامل معاملة بدلالة قيمتها الرقمية وليست كحروف. وفيما يلي مثال آخر لترتيب البيانات بدلالة حقل من نوع آخر (تاريخ مثلاً) وحقل نص:SQL SELECT * FROM table ORDER BY datefield, BINARY title حيث أن اسم الجدول table وحقل datefield حقل يمثل التاريخ، وحقل title حقل يمثل نص (باللغة العربية) البحث عن كلمة أو جزء من كلمة من المعروف أن معيار البحث للتساوي = يقوم بتصفية (فلترة) البيانات المعروضة بحسب الصيغة المذكورة، لكنها أيضاً ستواجه خللاً إذا كان أحد معايير البحث يمثل باللغة العربية، لذلك وجب أيضاً استخدام BINARY، كما في المثال التالي:SQL SELECT * FROM table WHERE BINARY field = 'كلمة' كذلك الحال عند الرغبة في البحث باستخدام LIKE:SQL SELECT * FROM table WHERE BINARY field LIKE '%كلمة%' البحث متعدد الشروط: يمكن استخدام LIKE و RLIKE لعمل بحث متعدد الشروط، وسأقوم فيما يلي بذكر بعض الأمثلة الشائعة، مع شرح مقتضب لكل منها. - الرموز المستخدمة مع LIKE يمكن استخدام الرمز _ للدلالة على حرف واحد مجهول، ففي المثال التالي:SQL SELECT * FROM table WHERE BINARY field LIKE '_حمد' تطابق معايير المثال كلاً من الكلمات التالية: أحمد ، احمد ، محمد ، نحمد ، بحمد يمكن استخدام الرمز % للدلالة على حرف أو عدد من الحروف أو حتى لا شيء، كما في الأمثلة التالية:SQL للبحث عن الأسماء التي تبدأ بحرف الألف وتنتهي بحرف الميم SELECT * FROM table WHERE BINARY field LIKE 'أ%م' ويطابق البحث كلاً من الكلمات التالية: أم، أمام، أنغام،... للبحث عن الأسماء التي الاسم الأخير فيها محدد SELECT * FROM table WHERE BINARY field LIKE '% محمد' ويطابق البحث كلاً من الأسماء: علي محمد، أحمد عبدالله محمد،... البحث عن وجود كلمتين داخل مقطع من البيانات دون شرط تقاربهما: SELECT * FROM table WHERE BINARY field LIKE '%الكلمة الأولى%الكلمة الثانية%' وهكذا فإن الرمز % يستخدم بدلاً عن كمية مجهولة من الحروف - عبارة RLIKE تستخدم للمقارنة باسلوب التعابير القياسية Regular Expressions باستخدام الرموز بشكل مشابه لطريقة pcre_match، يمكن معرفة المزيد عنها في http://www.mysql.com/doc/en/Regexp.html وتعتبر RLIKE أفضل من LIKE في حالة البحث عن عبارات بشروط معقدة كالرغبة في استثناء رموز التشكيل مثلاً. البحث باستثناء علامات التشكيل نحتاج في بعض الأحيان إلى البحث عن عبارة داخل بيانات يحتمل وجود علامات التشكيل فيها، وبذلك لا يمكننا تنفيذ عبارة LIKE لأن التطابق غير تام بالنسبة للكلمة الواحدة، وهذا هو ما يدفعنا إلى استخدام REGEXP أو RLIKE لتنفيذ بحث يناسبنا. والواقع أن استخدام REGEXP معقد كثيراً، ولكنني سأذكر هنا كيف بإمكاننا استخدامها للبحث عن عبارة باستثناء رموز التشكيل: . هذا الرمز يقابل تماماً الرمز _ في LIKE لذلك سنستخدمه في بداية ونهاية نموذج البحث * هذا الرمز يعني أي عدد من الرموز وسنستخدمه بجانب الرمز . ليماثل % في LIKE ، وكذلك سنستخدمه مع مربع نطاق الرموز لنحدد أننا نتوقع وجود أي عدد من رموز التشكيل [...] سنستخدم هذا الشكل لتحديد نطاق رموز نتوقع وجودها أثناء البحث وهي هنا رموز التشكيل سأستخدم هنا علامات التشكيل َ و ُ و ِ فبالتالي فإن مربع نطاق الرموز سيكون بهذا الشكل [َُِ] (قد لا يكون واضحاً أن علامات التشكيل الثلاثة بين القوسين) لذلك فإنني عندما أريد البحث عن كلمة ذهب مع توقعي وجود الكلمة مشكلة بالفتحة والضمة والكسرة فإنني سأقوم بعمل هذا:SQL SELECT * FROM table WHERE field RLIKE BINARY '.*ذ[َُِ]*ه[َُِ]*ب.*' تقديم بلاغ
بتاريخ: 22 مارس 200520 سنة كاتب الموضوع comment_30422 في البداية ماهي الاس كيو ال ( SQL )؟؟ الاس كيو ال هي عبارة عن قاعد بيانات تحتوي على جداول واغلب المواقع التي تكون صفحاتها منتهية ب ASP هي صفحات تسحب بياناتهامن قاعدة SQL وصفحات ASP ممكن ان تكون كنز من المعلومات لاختراق قواعد بيانات SQL وهذا ماسوف اشير اليه لاحقا ، و SQLتتنصت على البورت 1433ايضا مااريد ان اخبرك به ان ال SQL قد تحتوي على اكثر من قاعدة بيانات وكل قاعدة بيانات تحتوي على عدد من الجداول يمكنان تتصور كبرقواعد بيانات SQL والعدد الكبير من البيانات التى تحتويها .س : مالذي يمكن ان اس**يد منه اذا اخترقت قاعدة بيانات SQL ؟هذا على حسب نشاط الموقع اذا كان هذا الموقع منتدى لا اقصد منتديات PHP بل منتديات ASP في الغالب سوف تحصل على جميع اسماءالمستخدمين وكلمات السر وبامكانك تعديل وحذف اي موضوع وصلاحيات لم تكن تحلم بها ، اما اذا كان الموقع يحتوي على ميزةقائمة المراسلات فسوف تحصل على اعداد خيالية من الايميلات ، عندها قم بانشاء شركة للدعاية والاعلان وسوف تصبح ثريا اذن لاتنسى LinuxRay_توقع ان تجد اي شئ داخل قواعد بيانات معلومات اشخاص - ارقام هوا** - عناوين - تورايخ الميلاد ، ممكن ان تصبح Administrator .اعرف انه قد اصابك الملل الان لكن استعد نشاطك من جديد فالطريق مازال طويلا ... س : مالذي تحتاجة للدخول على قواعد بيانات SQL ؟تحتاج فقط لل User Name و Passwdس : من اين احصل على اسم المستخدم وكلمة المرور ؟هناك طرق عديدة للحصول على User name and Passwd منها كما اسلف صفحات ال ASP وملفات اخرى من نوع *.sql هناك ثغرات كثير يمكنان تحصل منها على كلمات المرور مثل ثغرة +.htrكيف تستخدم هذه الثغرة :http://target/page.asp+.htr target : الموقع الهدفPage : صفحة asp+.htr : الثغرةهذه الثغرة تقوم احيانا بفتح صفحة بيضاء لاتحتوي على اي حرف .... اعرف انك سوف تتساءل مالفائدة اذن منها الفائدة هوخلف هذه الصفحة البيضاء اذهب الى View Source لكي ترى اوامر البرمجة الخاصة ب ASP التى لايمكن لك ان تراها في الوضع العادي : مثل<%Set DB= Server.CreateObject("ADODB.Connection")DB.Open "DRIVER=SQL Server;SERVER=xxx;UID=sa;PWD=;APP=Microsoft ® Developer Studio;WSID=xxx;DATABASE=moe_dbs", "_LinuxRay", "6666666"%>-----------------------------------------------------------------في الكود السابق ترى ان اسم المستخدم هو _LinuxRayوكلمة السر هي 6666666 تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.