Emad Saif نشر 30 مارس 2022 أرسل تقرير نشر 30 مارس 2022 أقوم في بعض الأحيان بتنفيذ أوامر على النظام بإستخدام الدوال: exec system passthru لا أفهم الفرق بين هذه الدوال وبعضها، على سبيل المثال إذا أردت تشغيل سكريبت bash على لينكس، فهل إستعمال أي دالة من هذه الدوال سوف يؤدي نفس النتيجة؟ وهل هناك حالة أو إستعمال محدد لكل دالة من هذه الدوال؟ 1 اقتباس
1 Adnane Kadri نشر 30 مارس 2022 أرسل تقرير نشر 30 مارس 2022 كل الوظائف موجهة لتنفيذ أوامر معينة تختلف فيما بينها من حيث أن: الوظيفة system تقوم بتنفيذ الأمر وإعادة خرج الأمر ان وجد. فهنا ستقوم أنت نفسك بالتعامل مع الخرج وفق نمط او فكرة معينة مثل تنسيقه. الوظيفة exec تقوم بتنفيذ الأمر وعرض خرج الأمر مباشرة، أي انه لن يمكن تخزينه في متغير بغرض تنسيقه أو عرضه وفق شكل معين. الوظيفة passthru تقوم بتنفيذ الأمر وعرض خرج الأمر بشكل خام (وحدات ثنائية binary) مباشرة. يجب الحذر بشأن استعمال هاته الوظائف ان كنت تستقبل أو تقوم بتخصيص هاته الاوامر وفق تعامل المستخدمين معها، ففي هجمات تزوير الطلبات عبر المواقع CSRF مثلا يمكن حقن سطر أوامر يسمح للمستهدف بتنفيذ أي أوامر تخص النظام على خادم ويب. خصوصا في الخوادم الهشة مثل بعض تلك التي توفر استضافات مجانية، فهذا يعطي المهاجم تحكما كاملا بالنظام فضلا عن تحكمه بالموقع أو التطبيق. يتم كحل لهاته المشاكل تغليف وسائط الأوامر باستخدام الدالة escapeshellarg() أو escapeshellcmd() مما يجعلها غير قابلة للتنفيذ ومتحقق من صحة كل قيمة مدخلة. فان كنت تستقبل مثلا متغيرا path عبر الطلب GET لعرض محتويات مجلد ما لمشرف الموقع كالتالي: <pre> <?php system('ls ' . $_GET['path']); ?> </pre> فإن تعليف الأمر سيكون كـ: <pre> <?php system('ls ' . escapeshellarg($_GET['path'])); ?> </pre> 1 اقتباس
السؤال
Emad Saif
أقوم في بعض الأحيان بتنفيذ أوامر على النظام بإستخدام الدوال:
لا أفهم الفرق بين هذه الدوال وبعضها، على سبيل المثال إذا أردت تشغيل سكريبت bash على لينكس، فهل إستعمال أي دالة من هذه الدوال سوف يؤدي نفس النتيجة؟
وهل هناك حالة أو إستعمال محدد لكل دالة من هذه الدوال؟
1 جواب على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.