TO DONATE : BTC => 1D8Aq4q2jQnvGD1GaK9vbNwKgm1K5zUEWL || PM => U4089661


اهم قوانين :1- منع الردود الباهتة مثل شكرااااا و أخواتها 2- لا يسمح بالمشاحنات الطائفية باآ شكل من الأشكال 3- عدم استعمال الألفاظ التافهة و الكلام البذىء 4- عدم وضع معرفات التواصل الأجتماعى بالردود 5- الأطلاع على كامل القوانين واجب 


العودة   الحماية للأبد -Security 4 Ever > قسم البرمجـــة > أساسيات لغة الأسمبلي

أساسيات لغة الأسمبلي يهتم بلغة الآلة (التجميع) Assembly و طرق بناء بعض أجزاء التطبيقات من خلالها

 
أدوات الموضوع انواع عرض الموضوع
  #1  
قديم 15-06-2019, 09:16 AM
الصورة الرمزية zero-cool
zero-cool
:: عضو خاص ::
 
حـالة التــواجـد : zero-cool غير متواجد حالياً
تاريخ التسجيل: Apr 2016
الجــــنــــــس: ذكـر
المشاركات: 74
شكراً:56
تم شكره 256 مرة في 59 مشاركة
معدل تقييم المستوى: 0
zero-cool بدون تقييم
افتراضي Hello World Shellcode



السلام عليكم ورحمة الله وبركاته



إن شاء الله تكونوا في تمام الصحة والعافية إخواني


الدرس استوحيته من الأستاذ Vivek Ramachandran صاحب موقع Pentester Academy
تحية خاصة له

شفنا في هذا الدرس كيف نكتب برنامج بالأسمبلي يطبع Hello World

https://www.sec4ever.com/home/showth...627#post103627


في هذا الدرس حنشوف كيف نكتب شيلكود يطبع Hello World




أول خطوة نقوم بها هي نحذف ال 0x00 من الكود ونعوضها بتعليمات مطابقة لها
ثاني خطوة هي حذف ال hardcoded addresses لأن الشيلكود سينفذ في توزيعات مختلفة ضمن ثغرات متعددة
وقد يخلق مشكلة عند تنفيذه إذا كان يحتوي على hardcoded addresses


لفعل ذلك سنتبع التكنيك JMP-CALL-POP في كتابة الشيلكود


قلنا أن أول خطوة نقوم بها هي نحذف ال 0x00 من الكود ونعوضها بتعليمات مطابقة لها:

بما أن eax طوله 32 بت وكجزء منه هناك المسجل AX بطول 16بت والذي يتألف هو الآخر من مسجلين هما AL و AH بطول 8بت ف mov eax ,4 ستنقل 4 إلى al والباقي يملئ بال null bytes

فيصبح الكود كالتالي:

كود PHP:
section .data
     string
db "Hello World",0xa
     

section 
.text

_start
:

     xor 
eaxeax
     mov al
4
     
     
xor ebx ebx
     mov bl
1
     
     mov ecx
,string  
     
xor edxedx
     
     mov dl
11     
     int 0x80        


     
     
xor eaxeax
     mov al
1
     
     
xor ebxebx
     int 0x80 

ننفذ



نفتح البرنامج بال objdump ونتحقق من أنه لايحتوي على null bytes



نحول ال binary تبعنا إلى شيلكود:



نضعه في كود سي



ثم ننفذه



لم يعمل الشيلكود تبعنا

المشكلة هو يجب أن نكون قادرين على معرفة عنوان السلسلة hello world عند التنفيذ ولايهمنا إن تغير العنوان

هنا يأتي دور التكنيك JMP-CALL-POP

عندما تعمل call لكلمة فإن عنوان التعليمة التالية التي تأتي بعدها pushed في المكدس
أولا نعمل jmp للشيلكود ثم نستدعي الشيلكود ب call
عنوان التعليمة التالية التي تأتي بعد call وهي عنوان السلسلة hello world التي pushed في المكدس
وبمجرد إستدعاء تنفيذ shellcode نعمل pop لل ecx
والجزء العلوي من المكدس يحتوي على عنوان السلسة hello world الذي سيذهب داخل المسجل ecx


والآن لدينا عنوان السلسلة hello world داخل الشيلكود دون الحاجة إلى ال hardcoded

نقوم بهذه التغييرات في الكود تبعنا ليصبح:

كود PHP:
global _start

callshellcode
:
     
     
call shellcode
     string
db "Hello World",0xa
     

section 
.text

_start
:

     
jmp  callshellcode

shellcode
:
     xor 
eaxeax
     mov al
4
     
     
xor ebx ebx
     mov bl
1
     
     pop ecx  
     
xor edxedx
     
     mov dl
11     
     int 0x80        


     
     
xor eaxeax
     mov al
1
     
     
xor ebxebx
     int 0x80 

نضعه في الكود سي تبعنا كما شفنا في الأعلى وننفذه



بالتوفيق لكم
 

 

 

مايفعله الهكرز هو معرفة التكنولوجيا وتجربتها بطرق لايمكن ان يتخيلها الكثير من الناس .
ولديهم رغبة قوية في مشاركة هذه المعلومات مع الآخرين
وتوضيحها للاشخاص الذي قد تكون مؤهلاتهم الوحيدة الرغبة في التعلم.

[email protected]
رد مع اقتباس
الأعضاء الذين قالوا شكراً لـ zero-cool على المشاركة المفيدة:

الكلمات الدلالية (Tags)
shellcode, world


الذين يشاهدون محتوى الموضوع الآن : 1 ( الأعضاء 0 والزوار 1)
 
أدوات الموضوع
انواع عرض الموضوع

تعليمات المشاركة
لا تستطيع إضافة مواضيع جديدة
لا تستطيع الرد على المواضيع
لا تستطيع إرفاق ملفات
لا تستطيع تعديل مشاركاتك

BB code is متاحة
كود [IMG] متاحة
كود HTML معطلة

الانتقال السريع

المواضيع المتشابهه
الموضوع كاتب الموضوع المنتدى مشاركات آخر مشاركة
Hello World zero-cool أساسيات لغة الأسمبلي 0 15-06-2019 01:20 AM
Easy Php Vs. Appserv - Creative World x0Slotleet أساسيات حماية وتطوير السكريبتات 6 04-11-2012 10:44 PM


الساعة الآن 11:58 PM