






السمعة:
- إنضم17 يونيو 2023
- المشاركات 515
- الحلول 10
- مستوى التفاعل 1,106
- النقاط 93
مقدمة
لو بتقرأ بالمقال أكيد قاعد بتتصفح الإنترنت باستخدام الشبكة العنكبوتية العالمية World Wide Web
هي مشروع ضخم اشتغلت عليه البشرية خلال آخر 30 سنة وهدفها إنها توصل مصادر معلومات متنوعة وأحيانًا مش دايمًا مفيدة ببعضها ضمن شبكة ضخمة من المعلومات والأنظمة حول العالم
هي مشروع ضخم اشتغلت عليه البشرية خلال آخر 30 سنة وهدفها إنها توصل مصادر معلومات متنوعة وأحيانًا مش دايمًا مفيدة ببعضها ضمن شبكة ضخمة من المعلومات والأنظمة حول العالم
شو هي الشبكة العنكبوتية؟
الشبكة العنكبوتية مثل ما اسمها بدل هي شبكة يعني مجموعة صفحات معلومات مترابطة الفكرة الرئيسية فيها إنه كل صفحة فيها نصوص متصلة ببعض باستخدام تقنية اسمها الهايبر تكست (Hypertext) يعني لما تشوف كلمة أو رابط باللون الأزرق مثلاً وتضغط عليه راح ينقلك لمعلومة ثانية بصفحة مختلفة
هالتقنية سمحتلنا نتنقل بين صفحات متعددة بكل سهولة وبطريقة مش خطية يعني مو لازم نتابع صفحة بصفحة ممكن نرجع لورا أو نروح لأي صفحة ثانية مباشرة
عشان هيك سميناها شبكة لأنها متصلة زي خيوط العنكبوت
هالتقنية سمحتلنا نتنقل بين صفحات متعددة بكل سهولة وبطريقة مش خطية يعني مو لازم نتابع صفحة بصفحة ممكن نرجع لورا أو نروح لأي صفحة ثانية مباشرة
عشان هيك سميناها شبكة لأنها متصلة زي خيوط العنكبوت
كيف انبنت الشبكة؟
الفكرة بدأت عام 1989 لما العالم البريطاني تيم بيرنرز لي في مختبر CERN كان بدو يحل مشكلة ربط معلومات العلماء مع بعض وقتها كان كل عالم عنده بياناته الخاصة وما فيه طريقة سهلة لربطها مع بيانات غيره فاقترح فكرة نظام هايبر تكست اللي بسمح بربط المعلومات ببعض من خلال روابط مباشرة
سنة 1991 تم إطلاق أول موقع إلكتروني على الشبكة ومن وقتها صار عندنا تقريبًا حوالي ملياري موقع إلكتروني
الشبكة مش بس لمعلومات نصية، صار فينا نستخدمها للفيديوهات الصور شبكات التواصل الاجتماعي البحث وغيرها.
سنة 1991 تم إطلاق أول موقع إلكتروني على الشبكة ومن وقتها صار عندنا تقريبًا حوالي ملياري موقع إلكتروني
الشبكة مش بس لمعلومات نصية، صار فينا نستخدمها للفيديوهات الصور شبكات التواصل الاجتماعي البحث وغيرها.
كيف بتشتغل الشبكة؟
الشبكة العنكبوتية بتشتغل باستخدام بروتوكول موحد اسمه الـ HTTP لما تدخل موقع أو تكتب رابط جهازك (الموبايل أو الكمبيوتر) بترجم طلبك لبروتوكول الـ HTTP وببعث الطلب لسيرفر بعيد اللي برد عليك بالمعلومات اللي طلبتها
مثلاً لو طلبت صورة قطة المتصفح ببعث طلب للسيرفر اللي عنده الصورة والسيرفر برد عليك بالصورة هالعملية بتتم لأن كل الأجهزة بتتكلم بنفس اللغة الـ HTTP
مثلاً لو طلبت صورة قطة المتصفح ببعث طلب للسيرفر اللي عنده الصورة والسيرفر برد عليك بالصورة هالعملية بتتم لأن كل الأجهزة بتتكلم بنفس اللغة الـ HTTP
طلبات ديناميكية ومعلومات متغيرة
الإنترنت مش بس للطلبات الثابتة زي الصور ممكن نطلب معلومات ديناميكية زي الوقت الحالي السيرفر ممكن يعمل حسابات ويرجعلنا النتيجة بناءً على طلبنا يعني لو طلبنا الوقت بمنطقة UTC السيرفر بحسبه وبرجعلنا الوقت بشكل دقيق
دور المتصفح
كمستخدم إحنا ما بنتعامل مع الـ HTTP مباشرة إحنا بنضغط روابط وبنبحث عن فيديوهات أو صور المتصفح هو اللي بترجم طلباتنا لبروتوكول الـ HTTP وبرجع لنا النتيجة من السيرفر
شو هو الإنترنت؟
الإنترنت هو العمود الفقري اللي بتشتغل عليه الشبكة العنكبوتية العالمية World Wide Web ببساطة الإنترنت عبارة عن نظام بنستعمله حتى ننقل بيانات بين الأجهزة يعني إذا بدي أبعث رسالة Hello World من جهازي لجهاز ثاني في أي مكان بالعالم الإنترنت هو الوسيلة اللي بتساعدنا نعمل هالشي
كيف بنوصل الرسائل؟
تخيل إنه في سلك مباشر بين جهازي وجهاز جاري وأنا ببساطة ببعث البيانات عبر السلك بس المشكلة الحقيقية هي لما ما يكون في اتصال مباشر بين الأجهزة! هون بجي دور الإنترنت كحل
الإنترنت هو نظام موزّع Distributed System يعني إذا ما في طريقة مباشرة للاتصال بالجهاز الهدف الرسالة بتنتقل عبر أجهزة ثانية الفكرة إنه جهازي ببعث الرسالة لجهاز قريب مني وهذا الجهاز بدوره ببعثها لجهاز ثاني وهكذا لحد ما توصل للهدف النهائي
الإنترنت هو نظام موزّع Distributed System يعني إذا ما في طريقة مباشرة للاتصال بالجهاز الهدف الرسالة بتنتقل عبر أجهزة ثانية الفكرة إنه جهازي ببعث الرسالة لجهاز قريب مني وهذا الجهاز بدوره ببعثها لجهاز ثاني وهكذا لحد ما توصل للهدف النهائي
شبكة من الشبكات
الإنترنت مش جهاز واحد هو شبكة من الشبكات
الأجهزة كلها مرتبطة ببعض بشكل أو بآخر الرسالة اللي بنبعثها بتتنقل عبر مجموعة شبكات لحد ما توصل وكل ما كان في ارتباط بين الأنظمة الإنترنت بقدر يلاقي مسار للرسالة ويوصلها للهدف
الأجهزة كلها مرتبطة ببعض بشكل أو بآخر الرسالة اللي بنبعثها بتتنقل عبر مجموعة شبكات لحد ما توصل وكل ما كان في ارتباط بين الأنظمة الإنترنت بقدر يلاقي مسار للرسالة ويوصلها للهدف
طبقات الإنترنت (Layers)
عشان نفهم كيف بشتغل الإنترنت لازم نعرف إنه فيه طبقات أو مستويات بتوضح كيف البيانات بتنتقل
وهون بنستخدم نموذج TCP/IP واللي مقسم لعدة طبقات :
وهون بنستخدم نموذج TCP/IP واللي مقسم لعدة طبقات :
1. طبقة الرابط Link Layer
هاي الطبقة بتتعامل مع الاتصال المباشر بين جهازين قريبين من بعض ممكن يكون الاتصال عبر سلك واي فاي أقمار صناعية أو حتى ضوء زي المورس كود
الفكرة إنه أي طريقة لنقل البيانات بشكل مادي بتشتغل هون
الفكرة إنه أي طريقة لنقل البيانات بشكل مادي بتشتغل هون
2. طبقة الإنترنت Internet Layer
هاي الطبقة مسؤولة عن إيجاد الطريق الأنسب للرسالة للوصول لجهاز معين يعني إذا في شبكة فيها أجهزة كثيرة الطبقة هاي بتحدد المسار الأفضل حسب الظروف زي الازدحام أو تعطل الوصلات
3. طبقة النقل Transport Layer
لما الرسالة توصل للجهاز المطلوب طبقة النقل بتحدد البرنامج اللي المفروض يستلم الرسالة مثلاً إذا الجهاز فيه أكثر من برنامج شغال الطبقة هاي بتستعمل أرقام المنافذ Ports لتوصل الرسالة للبرنامج الصح كمان بتضمن إنه لو فقدنا جزء من الرسالة نحاول نعيد إرساله
4. طبقة التطبيقات Application Layer
هاي الطبقة بتحدد كيف البرامج بتتواصل مع بعضها مثلاً إذا بنحكي عن تصفح الإنترنت بنستخدم بروتوكول الـ HTTP وإذا بدنا نرفع ملفات بنستخدم الـ FTP وإذا بدنا نبعث إيميل بنستخدم الـ SMTP
ليش الإنترنت مهم؟
الإنترنت بخلينا نستخدم كل هالخدمات بطريقة سلسة وبسيطة كل طبقة مبنية على اللي قبلها وهاي الفكرة اللي بنسميها التجريد Abstraction يعني بنبني شيء بسيط ونشتغل عليه عشان نعمل أشياء أعقد
مووضوع الـ HTTP و HTTPS وأجزاء الـ URL مهممممم
الـ HTTP هو اختصار لـ HyperText Transfer Protocol يعني إنها القاعدة اللي يتم استخدامها لما نفتح موقع ويب. هاي تم تطويرها من قبل
راح يكون الحكي عن سبعه مواضيع :
1. الـ HTTP Vs HTTPS
2. الـ URL
3. شرح كيف ترسل طلب على الويب
4. الـ HTTP Methods
5. الـ HTTP Status Codes
6. الـ Headers
7. اسئله
مووضوع الـ HTTP و HTTPS وأجزاء الـ URL مهممممم
[ WalkTh ] الموضوع 'الـ HTTP و HTTPS وأجزاء الـ URL'
Tim Berners-Lee
وفريقه في الفترة من 1989 لحد 1991.راح يكون الحكي عن سبعه مواضيع :
1. الـ HTTP Vs HTTPS
2. الـ URL
3. شرح كيف ترسل طلب على الويب
4. الـ HTTP Methods
5. الـ HTTP Status Codes
6. الـ Headers
7. اسئله

الاسئله من TryHackMe | HTTP in...
- 3b0-0d
- الردود: 6
- المنتدى: بالعربي - THM | TryHackMe
فهم بروتوكول الـ HTTP وأهميته RFC 1945
أول وثيقة معيارية RFC 1945 اللي عرفت بروتوكول الـ HTTP ببساطة هو اللغة اللي بتخلي أنظمة الإنترنت تفهم بعضها
إذا ما كان فيه معيار محدد لطريقة الطلبات والاستجابات بين المتصفحات والسيرفرات ما راح نقدر نبني نظام متكامل زي شبكة الإنترنت
إذا ما كان فيه معيار محدد لطريقة الطلبات والاستجابات بين المتصفحات والسيرفرات ما راح نقدر نبني نظام متكامل زي شبكة الإنترنت
شو يعني الـ HTTP ؟
الـ HTTP هو بروتوكول للتواصل بين المتصفح (العميل) والسيرفر
أول وثيقة وضّحت هالبروتوكول هي RFC 1945 اللي عرّفت النسخة الأولى منه HTTP/1.0 الوثيقة شرحت طريقة عمل البروتوكول بالتفصيل زي كيفية إرسال الطلبات واستقبال الردود وكيفية استخدامه لتوفير الموارد
أول وثيقة وضّحت هالبروتوكول هي RFC 1945 اللي عرّفت النسخة الأولى منه HTTP/1.0 الوثيقة شرحت طريقة عمل البروتوكول بالتفصيل زي كيفية إرسال الطلبات واستقبال الردود وكيفية استخدامه لتوفير الموارد
كيف شكل الطلبات في الـ HTTP ؟
الطلب البسيط في الـ HTTP بتكون من سطر رئيسي فيه 3 أشياء أساسية:
1. طريقة الطلب الـ Method زي GET
2. المسار المطلوب الـ Request URI زي /
3. إصدار البروتوكول HTTP Version زي HTTP/1.0
السيرفر بفهم الطلب وبقرر شو الرد المناسب مثلاً:
1. طريقة الطلب الـ Method زي GET
2. المسار المطلوب الـ Request URI زي /
3. إصدار البروتوكول HTTP Version زي HTTP/1.0
السيرفر بفهم الطلب وبقرر شو الرد المناسب مثلاً:
- إذا الطلب صحيح وناجح السيرفر بيبعث حالة 200 OK
- إذا فيه خطأ من العميل زي طلب مورد مش موجود الرد بيكون 404 Not Found
شو هي أكواد الاستجابة (Status Codes)؟
يمكن تقسيم هذه الرموز إلى 5 مجموعات مختلفة
رمز الحالة | الوصف | توضيح |
---|---|---|
100-199 | رد المعلومات | تُرسل لإخبار العميل بقبول الجزء الأول من طلبه وضرورة متابعة الإرسال. هذه الرموز غير شائعة. |
200-299 | نجاح | تُستخدم لإبلاغ العميل بنجاح طلبه. |
300-399 | إعادة توجيه | تُستخدم لإعادة توجيه طلب العميل إلى مصدر آخر، سواءً كان ذلك إلى صفحة ويب مختلفة أو موقع ويب مختلف بشكل كامل. |
400-499 | أخطاء العميل | تُستخدم لإبلاغ العميل بوجود خطأ في طلبه. |
500-599 | أخطاء الخادم | تُحجز للأخطاء التي تحدث على الجانب الخادم وتشير عادة إلى مشكلة كبيرة في معالجة الخادم للطلب. |
بعض أمثلة على الرموز الشائعة

رمز الحالة | الوصف |
---|---|
200 | تم إكمال الطلب بنجاح. |
201 | تم إنشاء مورد جديد (على سبيل المثال، مستخدم جديد أو منشور في المدونة). |
301 | إعادة توجيه دائمة إلى صفحة جديدة أو إخطار محركات البحث بأن الصفحة انتقلت إلى مكان آخر. |
302 | إعادة توجيه مؤقتة، تشير إلى أن التغيير مؤقت وقد يتغير مرة أخرى في المستقبل القريب. |
400 | طلب سيء، يُبلغ المتصفح بأن هناك شيء خاطئ أو ناقص في طلبه. |
401 | غير مصرّح لك بعرض هذا المورد حتى تقوم بالتوثيق في تطبيق الويب، عادة باستخدام اسم مستخدم وكلمة مرور. |
403 | ليس لديك إذن لعرض هذا المورد، سواء كنت قد قمت بتسجيل الدخول أم لا. |
405 | الطلب غير مسموح به بواسطة المورد المستهدف. على سبيل المثال، إذا قمت بإرسال طلب GET إلى المورد create-account/ عندما كان يتوقع الخادم وجود طلب POST بدلاً منه. |
404 | الصفحة أو المورد الذي طلبته غير موجود. |
500 | خطأ في الخدمة الداخلية، يشير إلى أن الخادم واجه مشكلة لا يعرف كيفية التعامل معها بشكل صحيح. |
هيك ممكن يكون شكل الطلب :
كود:
GET /index.html HTTP/1.0[/B][/SIZE][/CENTER]
[SIZE=13px][B][CENTER]Host: example.com
والرد ممكن يكون :
كود:
HTTP/1.0 200 OK[/B][/SIZE][/CENTER]
[SIZE=13px][B][CENTER]Content-Type: text/html
<HTML>...</HTML>
مووضوع الـ HTTP و HTTPS وأجزاء الـ URL مهممممم
[ WalkTh ] الموضوع 'الـ HTTP و HTTPS وأجزاء الـ URL'
Tim Berners-Lee
وفريقه في الفترة من 1989 لحد 1991.راح يكون الحكي عن سبعه مواضيع :
1. الـ HTTP Vs HTTPS
2. الـ URL
3. شرح كيف ترسل طلب على الويب
4. الـ HTTP Methods
5. الـ HTTP Status Codes
6. الـ Headers
7. اسئله

الاسئله من TryHackMe | HTTP in...
- 3b0-0d
- الردود: 6
- المنتدى: بالعربي - THM | TryHackMe
مقدمة عن الروابط (URLs)
بالنسبة للروابط اللي بتشوفها كل يوم وبتكتبها في المتصفح هي فعلياً عبارة عن محدد موارد موحد Uniform Resource Locator الروابط بتنقسم لعدة أجزاء منها:
الـ Scheme : البروتوكول (مثل HTTP أو HTTPS)
الـ Host : الخادم اللي بنطلب منه المورد (زي example.com)
الـ Port : رقم المنفذ اللي بيشغل الخدمة (زي 80 أو 8080)
الـ Path : المسار اللي بِوصلنا للمورد (زي cat.gif)
الـ Query : المعلمات أو البيانات الإضافية اللي بنحددها (مثلاً الأبعاد)
الـ Fragment : معلومات خاصة بالمستخدم أو المتصفح (ما بتوصل للسيرفر)
الـ Scheme : البروتوكول (مثل HTTP أو HTTPS)
الـ Host : الخادم اللي بنطلب منه المورد (زي example.com)
الـ Port : رقم المنفذ اللي بيشغل الخدمة (زي 80 أو 8080)
الـ Path : المسار اللي بِوصلنا للمورد (زي cat.gif)
الـ Query : المعلمات أو البيانات الإضافية اللي بنحددها (مثلاً الأبعاد)
الـ Fragment : معلومات خاصة بالمستخدم أو المتصفح (ما بتوصل للسيرفر)
المشكلة مع المسافات والترميز (Encoding):
لو طلبنا مورد فيه مسافات زي hello world السيرفر ممكن يرد بـ "طلب غير صحيح" الحل هون هو ترميز الأحرف الغير آمنة باستخدام الـ ASCII
المسافة مثلاً تتحول لـ %20
كل حرف أو رمز عنده قيمة سداسية عشرية Hex
المسافة مثلاً تتحول لـ %20
كل حرف أو رمز عنده قيمة سداسية عشرية Hex
أنواع ترميز البيانات في الطلبات :
1. Form URL Encoded :
زي لما نستخدم نموذج Form عادي في صفحة ويب البيانات بتترمز وتُرسل كسلسلة نصوص مفصولة بـ = و &
2. JSON :
يستخدم لإرسال بيانات مهيكلة بشكل أعمق (زي الكائنات المتداخلة) مثلاً:
زي لما نستخدم نموذج Form عادي في صفحة ويب البيانات بتترمز وتُرسل كسلسلة نصوص مفصولة بـ = و &
2. JSON :
يستخدم لإرسال بيانات مهيكلة بشكل أعمق (زي الكائنات المتداخلة) مثلاً:
كود:
{
"name": "Connor"
}
متى بنستخدم JSON بدل Form URL ؟
- Form URL Encoded : لما نرسل بيانات بسيطة عبر نموذج ويب
- JSON : لما نحتاج بيانات معقدة زي واجهات الـ APIs
شو فكرة State بالويب وليش هو مهم؟
لما نحكي عن التطبيقات اللي بتشتغل على الإنترنت عادةً بنفكر إنها بس بتعرض محتوى ثابت زي صور أو نصوص لكن التطبيقات اللي إحنا بنستخدمها يومياً زي فيسبوك أو المواقع البنكية بتشتغل بطريقة أعمق
هاي التطبيقات بتعتبر برامج موجودة على سيرفرات بعيدة ومهمتها تتفاعل مع المتصفح اللي إحنا بنستخدمه
هاي التطبيقات بتعتبر برامج موجودة على سيرفرات بعيدة ومهمتها تتفاعل مع المتصفح اللي إحنا بنستخدمه
شو يعني State ؟
الفرق الأساسي بين برنامج بسيط زي موقع يعرضلك صورة قطة وبرنامج زي اللي بتسجل فيه حسابك البنكي هو مفهوم الحالة أو State هاي بتخلي البرنامج يتذكر شغلات عنك زي تسجيل دخولك البيانات اللي أدخلتها وأي تغييرات بتصير
لكن فيه مشكلة!
البروتوكول اللي بستخدمه الإنترنت واللي اسمه HTTP هو بروتوكول بدون حالة Stateless Protocol يعني كل طلب request انت بتبعثه للموقع السيرفر بتعامل معه كأنه جديد وما بتذكر او بخزن الطلبات اللي قبله (كل طلب لحال)
لكن فيه مشكلة!
البروتوكول اللي بستخدمه الإنترنت واللي اسمه HTTP هو بروتوكول بدون حالة Stateless Protocol يعني كل طلب request انت بتبعثه للموقع السيرفر بتعامل معه كأنه جديد وما بتذكر او بخزن الطلبات اللي قبله (كل طلب لحال)
طيب كيف بنحافظ على الـ State ؟
هون بيجي دور الكوكيز HTTP Cookies لما تسجل دخولك لموقع معين السيرفر بعمل شغلة ذكية :
ببعثلك قطعة صغيرة من البيانات اسمها كوكي والمتصفح بخزنها عندك
كل ما ترسل طلب جديد للسيرفر المتصفح برجع يبعث هاي الكوكيز عشان السيرفر يتذكر مين انت
ببعثلك قطعة صغيرة من البيانات اسمها كوكي والمتصفح بخزنها عندك
كل ما ترسل طلب جديد للسيرفر المتصفح برجع يبعث هاي الكوكيز عشان السيرفر يتذكر مين انت
مثال بسيط:
- لما تسجل دخول باسم مستخدم معين السيرفر بعطيك كوكي زي : auth=abdallah
- في الطلبات الجاية المتصفح تلقائياً برفق هاي الكوكيز مع كل طلب
- السيرفر بستخدم الكوكي عشان يعرف مين انت وبتعامل معك بناءً على هاي البيانات
مشاكل أمنية:
واحدة من النقاط اللي لازم ننتبهلها إنه السيرفر ما بتأكد إذا انت فعلاً سجلت الدخول بطريقة صحيحة أو إذا ببساطة اخترعت كوكي بنفسك (مثلاً: auth=admin)
عشان هيك التطبيقات لازم تستخدم أساليب أقوى زي أرقام الجلسات Session IDs اللي بتكون صعبة التوقع أو التزوير
عشان هيك التطبيقات لازم تستخدم أساليب أقوى زي أرقام الجلسات Session IDs اللي بتكون صعبة التوقع أو التزوير
ليش هذا مهم؟
فهم كيف الكوكيز و State بشتغلوا مهم جداً لأي شخص مهتم بالأمن السيبراني لأنه بعطيك فكرة عن كيف ممكن تتلاعب أو تحمي البيانات اللي بتتعامل معها التطبيقات والتعمق أكثر بهاي المواضيع بخليك تعرف نقاط الضعف وتحمي النظام من الثغرات
كيف بتصير طلبات الويب؟
بالعادة لما تفتح متصفح وتدخل رابط URL وتكبس Enter بتتفاجأ إن صفحة ويب ظهرت قدامك طيب كيف بتشتغل هاي العملية تحت الغطاء ؟
القصة بسيطة : الـ HTTP هو البروتوكول اللي بتم من خلاله هالكلام المتصفح تبعك ببعث طلب HTTP للخادم (السيرفر) عشان يرجعلك المحتوى
القصة بسيطة : الـ HTTP هو البروتوكول اللي بتم من خلاله هالكلام المتصفح تبعك ببعث طلب HTTP للخادم (السيرفر) عشان يرجعلك المحتوى
استخدام أدوات غير المتصفح
1. curl هي أداة بسيطة تستخدم من التيرمنال عشان تبعث طلبات HTTP مثلاً :
كود:
curl example.com
2. لو بدنا نشتغل على مستوى أقل ممكن نستخدم netcat عشان نبعث الطلب يدوي مثلاً:
كود:
nc example.com 80
كود:
GET / HTTP/1.1
Host: example.com
3. البرمجة مع طلبات HTTP
باستخدام بايثون :
لو بدنا نكتب برنامج يتعامل مع طلبات الويب مكتبة الـ requests ببايثون بتسهّل علينا هاي الأمور مثلا :
هون بنقدر نطبع النص اللي رجعه السيرفر أو حتى نفحص الـ Headers
كود:
import requests
response = requests.get("http://example.com")
print(response.text)
هون بنقدر نطبع النص اللي رجعه السيرفر أو حتى نفحص الـ Headers
استخراج الروابط من صفحة:
ممكن نكتب برنامج بسيط يسحب الروابط links من أي صفحة :
- بجيب النص HTML
- بدوّر على الـ TAG ـ <a> اللي فيه الروابط
- يعرض كل الروابط اللي لقاها
بنبدا مع تطبيق عملي على 39 تحدي لارسال الطلبات واسترجاعها بالـ Curl والـ Nc والـ python
من 1 الى 3 المطلوب Send an HTTP request
1. عن طريق الـ Curl
Bash:
curl localhost
2. عن طريق الـ Nc
Bash:
nc localhost 80 GET /flag
3. عن طريق الـ python
كود:
python3 -c "import requests; print(requests.get('http://localhost/flag').text)"
طلب باستخدام البايثون وهاد هو الكود الاصلي
Python:
import requests
print(requests.get('http://localhost/flag').text)
من 4 الى 6 المطلوب host header
4. عن طريق الـ Curl
Bash:
curl -H "Host: localhost" http://localhost
5. عن طريق الـ Nc
Bash:
echo -e "GET / HTTP/1.1\r\nHost: 6987947b16a3f4d71023eab30de877b6\r\nConnection: close\r\n\r\n" | nc localhost 80
HTTP:
GET / HTTP/1.1
Host: 6987947b16a3f4d71023eab30de877b6
Connection: close
6. عن طريق الـ python
كود:
python -c "import requests; print(requests.get('http://localhost', headers={'Host': '9d85473ad3a0eec01de4696e4388b5a5'}).text)"
وهاد هو الكود الاصلي
Python:
import requests
url = 'http://localhost'
host_value = '9d85473ad3a0eec01de4696e4388b5a5'
response = requests.get(url, headers={'Host': host_value})
print(f"Response from {url} with Host {host_value}: {response.text}")
من 7 الى 9 المطلوب Set the path in an HTTP request
7. عن طريق الـ Curl
Bash:
curl http://localhost/6987947b16a3f4d71023eab30de877b6
8. عن طريق الـ Nc
Bash:
echo -e "GET /1b16942c1b81c0786eb84f3bd3724b79 HTTP/1.1\r\nHost: localhost\r\nConnection: close\r\n\r\n" | nc localhost 80
HTTP:
GET /1b16942c1b81c0786eb84f3bd3724b79 HTTP/1.1
Host: localhost
Connection: close
9. عن طريق الـ python
كود:
python -c "import requests; print(requests.get('http://localhost/64abeec9191d09296dda2fdfbb781988', headers={'Host': 'localhost'}).text)"
وهاد هو الكود الاصلي
Python:
[/SIZE][/B]
import requests
url = 'http://localhost/64abeec9191d09296dda2fdfbb781988'
host_value = 'localhost'
response = requests.get(url, headers={'Host': host_value})
print(f"Response from {url} with Host {host_value}: {response.text}")
[B][SIZE=5]
من 10 الى 12 المطلوب URL encode a path in an HTTP request
10. عن طريق الـ Curl
Bash:
curl "http://localhost//9822629e%20b62993d7/9ad6eff9%20f873c007"
بنحول هدول الرموز لـ
& > %26
# > %23
> %20
11. عن طريق الـ Nc
Bash:
echo -e "GET /f65c9b42%20e4c70a50/b68ce464%204551c4fb HTTP/1.1\r\nHost: localhost\r\nConnection: close\r\n\r\n" | nc localhost 80
بنحول هدول الرموز لـ
& > %26
# > %23
> %20
وهاد هو الطلب
HTTP:
GET /f65c9b42%20e4c70a50/b68ce464%204551c4fb HTTP/1.1
Host: localhost
Connection: close
12. عن طريق الـ python
كود:
python -c "import requests; print(requests.get('http://localhost//a1afa0e3%20fcd2e340/6a0c2b8c%20f58256d5', headers={'Host': 'localhost'}).text)"
بنحول هدول الرموز لـ
& > %26
# > %23
> %20
وهاد هو الكود الاصلي
Python:
[/SIZE][/B]
import requests
url = 'http://localhost//a1afa0e3%20fcd2e340/6a0c2b8c%20f58256d5'
host_value = 'localhost'
response = requests.get(url, headers={'Host': host_value})
print(f"Response from {url} with Host {host_value}: {response.text}")
[B][SIZE=5]
من 13 الى 15 المطلوب Specify an argument in an HTTP request
13. عن طريق الـ Curl
Bash:
curl -H "Host: localhost" "http://localhost//a1afa0e3%20fcd2e340/6a0c2b8c%20f58256d5?a=b83c32298e6e891dea35dedf0b96cdf1"
14. عن طريق الـ Nc
Bash:
echo -e "GET /a1afa0e3%20fcd2e340/6a0c2b8c%20f58256d5?a=1422f7a8337d2e8147b5e9997f7a47ab HTTP/1.1\r\nHost: localhost\r\nConnection: close\r\n\r\n" | nc localhost 80
وهاد هو الطلب
HTTP:
GET /a1afa0e3%20fcd2e340/6a0c2b8c%20f58256d5?a=1422f7a8337d2e8147b5e9997f7a47ab HTTP/1.1
Host: localhost
Connection: close
15. عن طريق الـ python
كود:
python -c "import requests; print(requests.get('http://localhost/a1afa0e3%20fcd2e340/6a0c2b8c%20f58256d5', params={'a': '32fc5e63b7f3a9ec63c5183ecfc849ec'}).text)"
وهاد هو الكود الاصلي
Python:
[/SIZE][/B]
import requests
url = 'http://localhost/a1afa0e3%20fcd2e340/6a0c2b8c%20f58256d5'
params = {'a': '32fc5e63b7f3a9ec63c5183ecfc849ec'}
response = requests.get(url, params=params)
print(f"Response from {url} with params {params}: {response.text}")
[B][SIZE=5]
من 16 الى 18 المطلوب Specify multiple arguments in an HTTP request
16. عن طريق الـ Curl
Bash:
curl "http://localhost/a1afa0e3%20fcd2e340/6a0c2b8c%20f58256d5?a=d98aa9836c920b989a5635c67f886902&b=c490a9b5%204cde9062%2648514fde%234315279d" -H "Host: localhost"
هاد مثال على اكثر من معلومه ( بنفصلهن بـ & )
17. عن طريق الـ Nc
Bash:
echo -e "GET /a1afa0e3%20fcd2e340/6a0c2b8c%20f58256d5?a=3e7c42f3f4f89e8f6345609447cc0d25&b=b5c89e33%2074079a4b%269726845e%23079c10ef HTTP/1.1\r\nHost: localhost\r\nConnection: close\r\n\r\n" | nc localhost 80
وهاد هو الطلب
HTTP:
GET /a1afa0e3%20fcd2e340/6a0c2b8c%20f58256d5?a=3e7c42f3f4f89e8f6345609447cc0d25&b=b5c89e33%2074079a4b%269726845e%23079c10ef HTTP/1.1
Host: localhost
Connection: close
18. عن طريق الـ python
كود:
python -c "import requests; print(requests.get('http://localhost/a1afa0e3%20fcd2e340/6a0c2b8c%20f58256d5?a=2c22c8590cb0a46a76ae467e15fe1cba&b=443c8f39%2022e20791%2636529185%23c2800d55', headers={'Host': 'localhost'}).text)"
وهاد هو الكود الاصلي
Python:
[/SIZE][/B]
import requests
url = 'http://localhost/a1afa0e3%20fcd2e340/6a0c2b8c%20f58256d5'
params = {'a': '2c22c8590cb0a46a76ae467e15fe1cba', 'b': '443c8f39%2022e20791%2636529185%23c2800d55'}
response = requests.get(url, params=params, headers={'Host': 'localhost'})
print(f"Response from {url} with params {params}: {response.text}")
[B][SIZE=5]
من 19 الى 21 المطلوب Include form data in an HTTP request
19. عن طريق الـ Curl
Bash:
curl -X POST -d "a=8468bf1d32ca196a01b18388bf3e3986" -H "Host: localhost" "http://localhost/a1afa0e3%20fcd2e340/6a0c2b8c%20f58256d5"
وسبق وحكينا عن الـ Form
20. عن طريق الـ Nc
Bash:
echo -e "POST / HTTP/1.1\r\nHost: localhost\r\nContent-Length: 34\r\nContent-Type: application/x-www-form-urlencoded\r\n\r\na=69abbc1cd587c8981e5d0502e950152d" | nc localhost 80
وهاد هو الطلب
HTTP:
POST / HTTP/1.1
Host: localhost
Content-Length: 34
Content-Type: application/x-www-form-urlencoded
a=69abbc1cd587c8981e5d0502e950152d
21. عن طريق الـ python
كود:
python -c "import requests; print(requests.post('http://localhost/', headers={'Host': '6987947b16a3f4d71023eab30de877b6', 'Connection': 'close'}, data={'a': 'bff63dd33a30288b1bdb5a4416e2a96c'}).text)"
وهاد هو الكود الاصلي
Python:
[/SIZE][/B]
import requests
url = 'http://localhost/'
headers = {'Host': '6987947b16a3f4d71023eab30de877b6', 'Connection': 'close'}
data = {'a': 'bff63dd33a30288b1bdb5a4416e2a96c'}
response = requests.post(url, headers=headers, data=data)
print(f"Response from POST {url} with headers {headers} and data {data}: {response.text}")
[B][SIZE=5]
من 22 الى 24 المطلوب Include form data with multiple fields in an HTTP request
22. عن طريق الـ Curl
Bash:
curl -X POST "http://localhost/" -H "Host: localhost" -d "a=0515cd7cc9e0d5ccd79b0acb09102542&b=85672841%20416de088%26c687360c%236af5f601"
23. عن طريق الـ Nc
Bash:
echo -e "POST / HTTP/1.0\r\nHost: 127.0.0.1\r\nContent-Length: 78\r\nContent-Type: application/x-www-form-urlencoded\r\n\r\na=f63119f486b55181fdac486305d8b636&b=3b089da1%20e22c5688%2634503678%23dc102bc4" | nc localhost 80
وهاد هو الطلب
HTTP:
POST / HTTP/1.0
Host: 127.0.0.1
Content-Length: 78
Content-Type: application/x-www-form-urlencoded
a=f63119f486b55181fdac486305d8b636&b=3b089da1%20e22c5688%2634503678%23dc102bc4
24. عن طريق الـ python
Python:
python -c "import requests; print((requests.post('http://localhost/', headers={'Host': 'localhost'}, data={'a': '60e22136484d963bd50c99e94626dbc8', 'b': '3cc458ef 5431a2cd&19cec9d3#7a648a7e'})).text)"
وهاد هو الكود الاصلي
كود:
[/B][/SIZE][/CENTER]
[SIZE=5][B][CENTER]import requests
url = 'http://localhost/'
headers = {'Host': 'localhost'}
data = {'a': '60e22136484d963bd50c99e94626dbc8', 'b': '3cc458ef 5431a2cd&19cec9d3#7a648a7e'}
response = requests.post(url, headers=headers, data=data)
print(f"Response from POST {url} with headers {headers} and data {data}: {response.text}")
من 25 الى 27 المطلوب Include json data in an HTTP request
25. عن طريق الـ Curl
Bash:
curl -X POST -H "Content-Type: application/json" -d '{"a":"7ff7c4d20c9afd8b0d198634c2c1c629"}' http://localhost
26. عن طريق الـ Nc
Bash:
echo -e 'POST / HTTP/1.0\r\nHost: localhost\r\nContent-Length: 41\r\nContent-Type: application/json\r\n\r\n{"a":"6be3b1ca28f64d9a25588c7034a8b1c0"}' | nc localhost 80
وهاد هو الطلب
HTTP:
POST / HTTP/1.0
Host: localhost
Content-Length: 41
Content-Type: application/json
{"a":"6be3b1ca28f64d9a25588c7034a8b1c0"}'
27. عن طريق الـ python
كود:
python -c 'import requests; print(requests.post("http://localhost", headers={"Host": "localhost", "Content-Type": "application/json"}, data="{\"a\":\"b96a93183bc3654d6d9bcd6f9912d788\"}").text)'
وهاد هو الكود الاصلي
Python:
[/SIZE][/B]
import requests
url = "http://localhost"
headers = {"Host": "localhost", "Content-Type": "application/json"}
data = "{\"a\":\"b96a93183bc3654d6d9bcd6f9912d788\"}"
response = requests.post(url, headers=headers, data=data)
print(f"Response from POST {url} with headers {headers} and data {data}: {response.text}")
[B][SIZE=5]
من 28 الى 30 المطلوب Include complex json data in an HTTP request
28. عن طريق الـ Curl
Bash:
curl -X POST -H "Content-Type: application/json" -d '{"a": "3efb8f52cc7c3ce281e360620336650a", "b": {"c": "7b80994b", "d": ["c8a5b632", "92909c57 e90ee6db&a1a41ad1#0d237712"]}}' http://localhost

29. عن طريق الـ Nc
بنخزن هذه الطلب بملف ( وبنقدر نعمل هيك لكل الطلبات)
Bash:
POST / HTTP/1.1
Host: 127.0.0.1
Content-Length: 119
Content-Type: application/json
{"a":"6c988b59fc8b0b8b74b5f62bcd1dc417", "b":{"c":"b9c45c7d", "d":["92e58e74", "7b856d5d aacc7382&4778ec8f#75795ae7"]}}
بعدها بنكتب الامر
Bash:
[SIZE=5][B]cat request | nc localhost 80[/B][/SIZE]
30. عن طريق الـ python
كود:
python -c 'import requests; print(requests.post("http://localhost", json={"a": "9d5fe48f6fcbe6474f84811216cdbf7e", "b": {"c": "cd319365", "d": ["ff89d800", "a5bd55f4 58740e53&9f7e94f8#79739cb2"]}}, headers={"Host": "localhost"}).text)'
وهاد هو الكود الاصلي
Python:
import requests
url = "http://localhost"
json_data = {
"a": "9d5fe48f6fcbe6474f84811216cdbf7e",
"b": {
"c": "cd319365",
"d": [
"ff89d800",
"a5bd55f4 58740e53&9f7e94f8#79739cb2"
]
}
}
headers = {"Host": "localhost"}
response = requests.post(url, json=json_data, headers=headers)
print(f"Response from POST {url} with JSON data {json_data}: {response.text}")
من 31 الى 33 المطلوب Follow an HTTP redirect from HTTP response
31. عن طريق الـ Curl
Bash:
curl -L http://localhost
32. عن طريق الـ Nc
Bash:
[/B][/SIZE]echo -e "GET / HTTP/1.1\r\nHost: localhost\r\n\r\n" | nc localhost 80
echo -e "GET /cda4a8da943d0c94644935e1cd5e3d97 HTTP/1.1\r\nHost: localhost\r\n\r\n" | nc localhost 80[SIZE=5][B]
HTTP:
GET / HTTP/1.1
Host: localhost
HTTP:
GET /cda4a8da943d0c94644935e1cd5e3d97 HTTP/1.1
Host: localhost
33. عن طريق الـ python
كود:
python -c "import requests; print(requests.get('http://localhost', allow_redirects=True).text)"
وهاد هو الكود الاصلي
Python:
[/SIZE][/B]
import requests
url = 'http://localhost'
response = requests.get(url, allow_redirects=True)
print(f"Response from {url} with redirects allowed: {response.text}")
[B][SIZE=5]
من 34 الى 36 المطلوب Include a cookie from HTTP response
34. عن طريق الـ Curl
Bash:
curl -b cookies.txt http://localhost
35. عن طريق الـ Nc
Bash:
printf "GET / HTTP/1.1\r\nHost: localhost\r\nCookie: cookie=643f4def533e27c21302e59fd86cbb36\r\nConnection: close\r\n\r\n" | nc localhost 80
وهاد هو الطلب
HTTP:
GET / HTTP/1.1
Host: localhost
Cookie: cookie=643f4def533e27c21302e59fd86cbb36
Connection: close
36. عن طريق الـ python
كود:
python3 -c "import requests; r1 = requests.get('http://localhost', allow_redirects=False); cookie = r1.cookies.get('cookie'); r2 = requests.get('http://localhost', cookies={'cookie': cookie}); print(r2.text)"
وهاد هو الكود الاصلي
Python:
[/SIZE][/B]
import requests
url = 'http://localhost'
r1 = requests.get(url, allow_redirects=False)
cookie = r1.cookies.get('cookie')
r2 = requests.get(url, cookies={'cookie': cookie})
print(f"Response after following redirect with cookie: {r2.text}")
[B][SIZE=5]
من 37 الى 39 المطلوب Make multiple requests in response to stateful HTTP responses
37. عن طريق الـ Curl
Bash:
curl -X GET http://localhost --cookie-jar cookies.txt --cookie cookies.txt && curl -X GET http://localhost --cookie-jar cookies.txt --cookie cookies.txt && curl -X GET http://localhost --cookie-jar cookies.txt --cookie cookies.txt
38. عن طريق الـ Nc
Bash:
echo -e "GET / HTTP/1.0\r\nHost: 127.0.0.1\r\nCookie: session=dummy\r\n" | nc localhost 80 | grep -oP 'Set-Cookie: session=\K[^\s;]*' | xargs -I {} echo -e "GET / HTTP/1.0\r\nHost: 127.0.0.1\r\nCookie: session={}\r\n" | nc localhost 80
echo -e "GET / HTTP/1.0\r\nHost: 127.0.0.1\r\nCookie: session=eyJzdGF0ZSI6Mn0.Z22P_w.pUKUlrwwUJ5Hg3aluOtJ3hO1S8k\r\n" | nc localhost 80
echo -e "GET / HTTP/1.0\r\nHost: 127.0.0.1\r\nCookie: session=eyJzdGF0ZSI6M30.Z22QUg.sMd35lKUbDu8tNrpAIdgi8ghqB0\r\n" | nc localhost 80
عشان نجرب بس يعني القيمه dummy وهميه بس
يعني هيك خبرناه اننا عننا كوكي معينه وبعدها عن طريق الـ grep بنبحث عن كوكي جديده
بنرسل اول طلب
وبعدها بالطلب الثاني بنستخدم الكوكي اللي بترجعلنا من الرد الاول
وبعدها بالطلب الثالث بنستخدم الكوكي اللي بترجعلنا من الرد الثاني
وهاد هو الطلب
HTTP:
GET / HTTP/1.0
Host: 127.0.0.1
Cookie: session=dummy
39. عن طريق الـ python
كود:
python3 -c "import requests; host = 'http://127.0.0.1/'; response1 = requests.get(host); cookie1 = response1.cookies; response2 = requests.get(host, cookies=cookie1); cookie2 = response2.cookies; response3 = requests.get(host, cookies=cookie2); cookie3 = response3.cookies; response4 = requests.get(host, cookies=cookie3); cookie4 = response4.cookies; print(response4.text)"
وهاد هو الكود الاصلي
Python:
import requests
host = 'http://127.0.0.1/'
response1 = requests.get(host)
cookie1 = response1.cookies
response2 = requests.get(host, cookies=cookie1)
cookie2 = response2.cookies
response3 = requests.get(host, cookies=cookie2)
cookie3 = response3.cookies
response4 = requests.get(host, cookies=cookie3)
cookie4 = response4.cookies
print(f"Final response after multiple redirects: {response4.text}")
في اكثر من شخص سالني كم بقعد معي المنشور بالتنسيق والتعديل والشرح
فجوابي بختلف من منشور لمنشور هاد اخذ 3 ساعات ونص شرح وترتيب وتنسيق بدون حل الاسئله كنت احلها قبل
3 ساعات ونص == اجر لييوم الدين
تجارة رابحة
تجارة لن تبور
وبسسس
وهيك بنحكي خلصنا اول جزء
التعديل الأخير بواسطة المشرف: