برچسب Archives: bash

آموزش shell code نویسی در لینوکس – Linux قسمت دوم

به نام دانای بر حق

در قسمت قبلی در مورد مقدمات و شل کد نویسی صحبت کردیم و از بحث های بسیار ابتدایی شروع کردیم و این خودش برای شروع خوب بودش حالا در این قسمت قصد داریم ببینیم به چه صورت میتونیم بدون ورود مستقیم کدها در ترمینال اون ها رو در ترمینال اجرا کننیم و به bash بفرستیم خب این میشه شروع ماجرای دوم که جای تعمق داره.

تحریک bash با فایل و اجرا دستور در آن

اول باید بگیم فایل هایی با پسوند sh میتونه این کار رو انجام بده و حالا این فایل sh رو چطور بنویسیم باز هم از رفتن به سمت خرابکاری امتناع می کنیم تا و یه سری دستور ساده در نظر میگیریم خب دستور  اولی که در نظر می گیریم برنامه xampp اگر به صورت اجرای خودکار یا سرویس نباشد در لینوکس بعد از روشن شدن سیستم میبایستی xampp رو استارت کنید و حتی میتونید با دستور ریستارت از اول اجراش کنید برای این کار باید دستور زیر رو در ترمینال وارد کنید:

خب حالا ما برای بسته بندی و اجرا این کد در bash راه خیلی سختی در پیش نداریم با ۳ تا حرکت ردیفش می کنیم هول نکنین 😀

خب حرکت اول یه text editor رو باز کنین و به نام xampp-restart.sh مثلا در دستکتاپ خودتون وارد کنید

حرکت دوم این کد رو توش paste کنید و دوباره ذخیره کنید:اطلاعات بیشتر

آموزش shell code نویسی در لینوکس – Linux قسمت اول

به نام دانای بر حق

مقدمه

پیرو آموزش هایی که SadeghPM عزیز در مورد شل کد نویسی قرارداده بودش ما سعی کردیم این آموزش رو برای لینوکس ادامه بدیم البته با کسب اجازه از ایشان، و اما اگر بخواهیم در یک جمله در مورد شل کد صحبت کنیم شل کد کدهای ماشینی هستند که برای انجام یه سری عمل به سیستم عامل تحویل داده میشند و نتیجه خاصی دارند و این اعمال میتونه خرابکارانه باشه یا نباشه و حالا برای کسب اطلاعات بیشتر به آموزش SadeghPM قسمت اول مراجعه کنید در اینجا، حال آنکه شل کد های میتونند با زبان ماشین یا همون همون آپکد های hex یا هگزادسیمال بهتره بگیم باشند یا می تونند به صورت فرامینی باشند که در که در بخش های که از سیستم عامل اجرا شوند که گاهی پذیرای command line هستند به صورت متنی ارسال شده و اجرا شوند که بحث ما اکنون حول محور این بخش command line هستش.

تفاوت ارسال command line در ویندوز و لینوکس

خب در این شکی نیست در مبحث شل کد نویسی در لینوکس بسیار دست انسان باز هستش تا ویندوز، که در ادامه توضیح مبسوط تر میدیم، تفاوت اولی که میتونیم ازش یاد بکنیم این هستش کد های شما باید در ویندوز در cmd و یا همون command port می باشد ولی در لینوکس از bash و برنامه ی terminal استفاده میشود حال چرا لینوکس قدرت بیشتری داره، علت اول این هستش که این سیستم عامل جوری تعریف شده که حدودا ۹۵٪ از اعمال در این سیستم عامل غیر وابسته به واسط گرافیکی هستش و با terminal میشود به سرعت انجام کار داد، به طور مثال تقریبا در تمام ابر توزیع های لینوکس یه نسخه سرور دارد که فاقد GUI یا واسط گرافیکی میباشد و همواره باید از پروتوکل SSH و خط فرمان اجرای دستور کرد.

اجرای کد در terminal

برای اجرای دستور در ترمینال ما به سادگی میتونیم  با کلید ترکیبی Ctrl+Alt+T اون رو اجرا کنه، و کد های مورد نظر مون رو بنویسیم، به عنوان مثال با نوشت دستور dir لیست فایل ها و فولدر های جاری به شما نمایش داده میشود و و به همین تریتب شما موفق میشوید حال آنکه ما برای shellcode نویسی نیاز به کامپایلر و یا اسمبلر ها داریم که تو لینوکس به صورت پیش فرض کامپایلر c به به نام gcc نصب هستش و خیالتون رو از این بابت راحت می کنه و حالا برای اجرا کد های اسمبل با نصب nasm که به سادگی میتونین کد ها اسمبلی رو هم اجرا کنید بیاییم مراحل زیر رو با هم اجرا کنیم، ولی قول بدین زیاد روی نکنین سیستم منفجر کنین 😀 :

دستور ها در ترمینال اجرا میشود تا اولین برنامه یعنی hello world رو در اسمبلی بنویسیم.اطلاعات بیشتر