Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
bbqsql — أداة استغلال SQL Injection | Kitploit
أدوات/GitHubGitHub/ciscocxsecurity/bbqsql
تحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويباختبار الاختراق
GitHubciscocxsecurity/bbqsql

bbqsql

أداة استغلال SQL Injection

عرض المستودع
826196منذ 7 سنواتتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

#BBQSQL# أداة استغلال حقن SQL الأعمى

جدول المحتويات

  • ما هو BBQSQL؟
  • نظرة عامة على ملف README
  • الاستخدام عالي المستوى
  • التثبيت
  • خيارات BBQSQL
  • نظرة عامة على صيغة الاستعلام
  • معلمات HTTP
  • تصدير الإعدادات
  • استيراد الإعدادات
  • الخطافات المخصصة
  • وجدت خطأ؟
  • هل يمكنني المساعدة؟
  • ما قصة الاسم؟

ما هو BBQSQL؟

يمكن أن يكون استغلال حقن SQL الأعمى مؤلماً. عندما تعمل الأدوات المتاحة، فإنها تعمل بشكل جيد، ولكن عندما لا تعمل، يجب عليك كتابة شيء مخصص. هذا يستغرق وقتًا طويلاً وممل. يمكن لـ BBQSQL مساعدتك في معالجة هذه المشكلات.

BBQSQL هو إطار عمل لحقن SQL الأعمى مكتوب بلغة بايثون. إنه مفيد للغاية عند مهاجمة ثغرات حقن SQL الصعبة. BBQSQL هي أيضًا أداة شبه تلقائية، تسمح بقدر كبير من التخصيص لتلك النتائج الصعبة في حقن SQL. الأداة مصممة لتكون غير مرتبطة بنوع قاعدة البيانات ومتعددة الاستخدامات للغاية. كما أنها تحتوي على واجهة مستخدم بديهية لتسهيل إعداد الهجمات. يتم أيضًا تنفيذ مكتبة Python gevent، مما يجعل BBQSQL سريعًا للغاية.

نظرة عامة على ملف README

حاولنا كتابة الأداة بطريقة تجعلها واضحة ذاتيًا عند إعداد هجوم في الواجهة. ومع ذلك، من أجل الدقة قمنا بتضمين ملف README مفصل يجب أن يوفر لك رؤية إضافية حول تفاصيل كل خيار تكوين. شيء يجب ملاحظته هو أن كل خيار تكوين في الواجهة يحتوي على وصف مرتبط به، لذا إذا اخترت تشغيل الأداة دون قراءة هذه الصفحة، فيجب أن تكون قادرًا على شق طريقك خلال هجوم.

الاستخدام عالي المستوى

على غرار أدوات حقن SQL الأخرى، تقدم معلومات معينة عن الطلب.

يجب تقديم المعلومات المعتادة:

  • URL
  • طريقة HTTP
  • الرؤوس
  • الكوكيز
  • طرق الترميز
  • سلوك إعادة التوجيه
  • الملفات
  • مصادقة HTTP
  • الوكلاء

ثم حدد أين يتم الحقن وما هي الصيغة التي نقوم بحقنها. تابع القراءة للحصول على التفاصيل.

التثبيت

يجب أن يكون هذا واضحًا، ولكن مهما يكن. جرب تشغيل:

root@kitploit:~
sudo pip install bbqsql

إذا لم ينجح ذلك، يمكنك التثبيت من المصدر. الأداة تتطلب gevent و requests.

خيارات BBQSQL

في القائمة سترى مكانًا لخيارات BBQSQL. هنا تحدد الخيارات التالية:

الاستعلام

هذا موصوف بالتفصيل أدناه نظرة عامة على صيغة الاستعلام.

ملف_المخرجات_csv

اسم ملف لإخراج النتائج إليه. اترك هذا فارغًا إذا كنت لا تريد إخراج إلى ملف.

التقنية

يستخدم BBQSQL تقنيتين عند إجراء هجوم حقن SQL الأعمى. التقنية الأولى والافتراضية المستخدمة هي binary_search. انظر ويكيبيديا لمزيد من المعلومات.

التقنية الثانية التي يمكنك استخدامها هي frequency_search. يعتمد البحث بالتردد على تحليل اللغة الإنجليزية لتحديد التردد الذي سيظهر به الحرف. طريقة البحث هذه سريعة جدًا ضد البيانات غير الانتروبية، ولكن يمكن أن تكون بطيئة ضد البيانات غير الإنجليزية أو المبهمة.

يمكنك تحديد إما binary_search أو frequency_search كقيمة لهذه المعلمة.

سمة_المقارنة

يحدد هذا نوع حقن SQL الذي اكتشفته. هنا يمكنك تعيين أي سمة من استجابة HTTP يجب أن ينظر إليها bbqsql لتحديد صواب/خطأ.

يمكنك تحديد: status_code، url، time، size، text، content، encoding، cookies، headers، أو history

إذا حددت حقن SQL يؤدي إلى رمز حالة مختلف للخادم فاضبط 'status_code' هنا. إذا كان الكوكيز مختلفًا فاضبط 'cookie'. إذا كان حجم الاستجابة مختلفًا فاضبط 'size'. لقد فهمت الفكرة.

التزامن

التزامن يعتمد على مكتبة gevent في بايثون. من الناحية الوظيفية، يبدو وكأنه يعمل مثل الخيوط ولكن تفاصيل كيفية عمله يمكن رؤيتها في محادثتنا في DefCon هنا [أدخل الرابط]. هذا الإعداد يتحكم في مقدار التزامن لتشغيل الهجوم. هذا مفيد للحد من الطلبات وتسريع أوقات الهجوم. للخوادم عالية الأداء مثل nginx، تمكنا من ضبط التزامن إلى 75. بشكل افتراضي، هذا مضبوط على '30'.

نظرة عامة على صيغة الاستعلام

إذا واجهت ثغرة حقن SQL تحتوي على بعض الخصائص الغريبة (مثل عدم إمكانية تضمين أحرف معينة أو عدم عمل وظائف مثل ASCII/CHAR)، فربما وجدت نفسك تكتب سكريبتًا مخصصًا بصيغة الحقن الخاصة بك. BBQSQL يلغي الحاجة إلى البرمجة النصية ويوفر طريقة لك للصق صيغة الاستعلام المخصصة والاستغلال بسهولة.

مدخل الاستعلام هو المكان الذي ستبني فيه استعلامك المستخدم لاستخراج المعلومات من قاعدة البيانات. الافتراض هو أنك قد حددت بالفعل حقن SQL على متغير ضعيف، واختبرت استعلامًا ناجحًا.

فيما يلي مثال على استعلام يمكنك استخدامه لبناء استعلامك.

في هذا المثال، المهاجم يبحث عن تحديد إصدار قاعدة البيانات:

root@kitploit:~
vulnerable_parameter'; if(ASCII(SUBSTRING((SELECT @@version LIMIT 1 OFFSET ${row_index}) , ${char_index} ,1))) ${comparator:>}ASCII(${char_val}) WAITFOR DELAY '0\:0\:0${sleep}'; --

صيغة الاستعلام تعتمد على عناصر نائبة تخبر BBQSQL بكيفية تنفيذ الهجوم.

تحتاج إلى تقديم العناصر النائبة التالية لكي يعمل الهجوم. بمجرد وضعها في استعلامك، سيقوم bbqSQL بالباقي:

${row_index}: يخبر هذا bbqSQL بتكرار الصفوف هنا. نظرًا لأننا نستخدم LIMIT يمكننا عرض عدد n من الصفوف اعتمادًا على قيمة ${row_index}.

${char_index}: يخبر هذا bbqSQL أي حرف من التحديد الفرعي (subselect) للاستعلام.

${char_val}: يخبر هذا bbqSQL أين يقارن النتائج من التحديد الفرعي للتحقق من النتيجة.

${comparator}: هذه هي الطريقة التي تخبر بها BBQSQL بمقارنة الاستجابات لتحديد ما إذا كانت النتيجة صحيحة أم لا. بشكل افتراضي، يتم استخدام الرمز >.

${sleep}: هذا اختياري ولكنه يخبر bbqSQL أين يقوم بإدراج عدد الثواني للنوم عند إجراء حقن SQL قائم على الوقت.

ليست كل هذه العناصر النائبة مطلوبة. على سبيل المثال، إذا اكتشفت حقن SQL شبه أعمى قائم على القيمة المنطقية (boolean-based)، يمكنك حذف المعلمة ${sleep}.

معلمات HTTP

لدى BBQSQL العديد من معلمات HTTP يمكنك تكوينها عند إعداد هجومك. كحد أدنى، يجب توفير URL، وأين تريد تشغيل استعلام الحقن، والطريقة. الخيارات التالية يمكن تعيينها:

  • files
  • headers
  • cookies
  • url
  • allow_redirects
  • proxies
  • data
  • method
  • auth

تحدد أين تريد إدراج استعلام الحقن باستخدام القالب ${injection}. بدون قالب الحقن، لن تعرف الأداة أين تدرج الاستعلام.

الملفات

قدم الملفات التي سيتم إرسالها مع الطلب. اضبط القيمة على المسار وسيتولى BBQSQL فتح/تضمين الملف.

الرؤوس

رؤوس HTTP التي سيتم إرسالها مع الطلبات. يمكن أن تكون سلسلة نصية أو قاموسًا. على سبيل المثال:

{"User-Agent":"bbqsql"} أو "User-Agent: bbqsql"

الكوكيز

قاموس أو سلسلة نصية من الكوكيز التي سيتم إرسالها مع الطلب. على سبيل المثال:

{"PHPSESSIONID":"123123"} أو PHPSESSIONID=123123;JSESSIONID=foobar

الرابط

حدد رابطًا يجب إرسال الطلبات إليه.

السماح_بإعادة_التوجيه

هذه قيمة منطقية تحدد ما إذا كانت إعادة توجيه HTTP ستُتبع عند إجراء الطلبات.

الوكلاء

حدد وكيل HTTP لاستخدامه في الطلب كقاموس. على سبيل المثال:

{"http": "10.10.1.10:3128","https": "10.10.1.10:1080"}

البيانات

حدد بيانات POST لإرسالها مع الطلب. يمكن أن تكون سلسلة نصية أو قاموسًا. على سبيل المثال:

{"input_field":"value"} أو input_field=value

الطريقة

حدد طريقة طلب HTTP. الطرق الصالحة هي:

'get','options','head','post','put','patch','delete'

المصادقة

حدد مجموعة (tuple) من اسم المستخدم وكلمة المرور لاستخدامها في مصادقة HTTP الأساسية. على سبيل المثال:

("myusername","mypassword")

تصدير الإعدادات

بعد إعداد هجومك في الواجهة، يمكنك تصدير ملف الإعدادات. سترى الخيار عند تشغيل الأداة. ملف الإعدادات المُصدر يستخدم ConfigParser، وهو سهل القراءة. يمكن رؤية مثال لملف إعدادات أدناه:

`[Request Config] url = http://example.com/sqlivuln/index.php?username=user1&password=secret${injection} method = GET

[HTTP Config] query = ' and ASCII(SUBSTR((SELECT data FROM data LIMIT 1 OFFSET ${row_index:1}),${char_index:1},1))${comparator:>}${char_val:0} # technique = binary_search comparison_attr = size concurrency = 30`

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

استيراد الإعدادات

يمكنك أيضًا استيراد إعدادات من سطر الأوامر أو من واجهة المستخدم. لاستيراد إعدادات من سطر الأوامر فقط قم بتشغيل bbqsql مع الخيارات التالية:

bbqsql -c config_file

عند تحميل ملف إعدادات سواء عبر سطر الأوامر أو واجهة المستخدم، يتم تشغيل نفس إجراءات التحقق من الصحة على المعلمات للتأكد من صحتها.

الخطافات المخصصة

أحيانًا تحتاج إلى فعل شيء مجنون حقًا. ربما تحتاج إلى تشفير القيم التي تدخل إلى حقل قبل إرسال الطلب أو ربما تحتاج إلى ترميز URL ثلاث مرات. بغض النظر، هذه المواقف تجعل الأدوات الأخرى غير قابلة للاستخدام. يتيح لك BBQSQL تعريف وظائف "خطاف" (hook) ستستدعيها الأداة في نقاط مختلفة خلال الطلب. على سبيل المثال، يمكنك تحديد وظيفة pre_request تأخذ الطلب كوسيطة، وتقوم بأي تحويرات ضرورية، وتعيد الطلب المعدل ليتم إرساله إلى الخادم.

لتنفيذ ذلك، قم بإنشاء ملف بايثون وحدد وظائف الخطاف. أسماء الوظائف المتاحة مذكورة أدناه. في ملف الخطاف الخاص بك، يمكنك تحديد أقل عدد أو أكثر من وظائف الخطاف هذه حسب رغبتك. ثم، في قسم bbqsql_options من القائمة، يمكنك تحديد موقع ملف الخطاف الخاص بك. سيقوم BBQSQL بسحب هذا الملف واستخدام أي خطافات قمت بتعريفها.

من المهم أن يكون لوظائف الخطاف التي تحددها الأسماء الدقيقة المحددة أدناه وإلا لن يعرف BBQSQL أي خطاف يستدعي متى. تستقبل وظيفة args معلمة واحدة تحتوي على جميع الوسيطات المستخدمة لإنشاء طلب HTTP. تستقبل وظيفة pre_request كائن الطلب قبل إرساله. تستقبل وظيفة post_request كائن الطلب بعد إرساله. تستقبل وظيفة response كائن الاستجابة قبل إعادته إلى BBQSQL.

الخطافات التالية متاحة:

args: قاموس بالوسائط التي يتم إرسالها إلى Request().

pre_request: كائن Request، مباشرة قبل إرساله.

post_request: كائن Request، مباشرة بعد إرساله.

response: الاستجابة الناتجة من Request.

لمزيد من المعلومات حول كيفية عمل هذه الخطافات وكيف يجب أن يبدو قاموس hooks الخاص بك، راجع توثيق مكتبة الطلبات حول خطافاتها

قد يبدو ملف خطافات مثال كالتالي:

root@kitploit:~
# file: hooks.py
import time

def pre_request(req):
    """
    this hook replaces a placeholder with the current time
    expecting the url to look like this:
        http://www.google.com?k=v&time=PLACEHOLDER
    """
    req.url = req.url.replace('PLACEHOLDER',str(time.time()))
    return req

وجدت خطأ؟

قدم أي إصلاحات للأخطاء أو طلبات ميزات إلى https://github.com/Neohapsis/bbqsql/

هل يمكنني المساعدة؟

من فضلك! نرى أن هذه نقطة انطلاق رائعة لبناء إطار عمل كامل لحقن SQL. لا تتردد في عمل Fork للكود ويمكننا دمج تغييراتك إذا كانت مفيدة.

ما قصة الاسم؟

BBQ لذيذة للغاية وكذلك حقن SQL!

تنزيل الأداة