<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>نوشته های sia</title><link>https://virgool.ir/feed/@l14ck3r0x01</link><description>یک script kiddie plus که اینجا از چیزای که یاد گرفته می نویسد :)</description><language>fa</language><pubDate>2026-11-11 15:12:32</pubDate><image><url>https://files.virgool.ir/upload/users/81493/avatar/HbLMYe.jpeg</url><title>sia</title><link>https://virgool.ir/@l14ck3r0x01</link></image><item><title>ئامانج و رێبوار</title><link>https://virgool.ir/@l14ck3r0x01/ئامانج-و-رێبوار-mhvegduukb2t</link><description>خنده‌هایشان را باد دزدیده بودبه دنبال آن روی لب‌های غریبه می‌گشتند، چیزی نمی‌یافتنچون خنده‌هایشان بخار شده بود و سپس ابر ، باران و بعد از آن به ماهی‌ها رسیده بودما‌هی‌ها خوشحال بودند،ماهی‌ها هم داشتند می‌مردند، همه مرده بودند.ـــــــــــــــــــــــــ-مردو زیندو دەبێتەوە؟ +ئەوەی خۆی لە مردویی داوە یان ئەوەی مردوە؟ - فەرقی چیە؟ +مردو گەر زوو فریای کەوی شایەد زیندو بێتەوە، بەڵام ئەوی دی قەت ناتوانی -یانی دەڵێی ئەو خۆی لە مردویی دابو؟ + ئەو زۆر لە مێژ بوو مردبو، نەتدەتوانی تۆ هیچ بکەی -بڵام حەمو رۆژێک دەیببنم.. +ئەو هردۆکیانە!-مردبو، لە کەنار گۆمێکی پڕ لە ماسی.+پڕ لە ماسی؟ تۆ ماسیت دی لە کەناری؟ -نە لە ڕاستیدا، حەمیشە دەیکوت ماسیە رەشەکانی نێو خێنم دەردێنم، بەڵام من هیچم نەدی، ڕەنگە لە جێیەکی دی ئازادی کردبن ... +تەنانەت لوتوسیشم نەدی، سەرەنج ڕاکێش نیە؟ ... +بۆ هیچ ناڵێی؟ -ماسیەکانی سوتان، بیرت نایە؟ +با بیرم دێت...، بەڵام... ئەو ئاواتی شتێکی دی بوو -هەمیشە بە ئەوە خۆت فریو دەدەی؟ +تەنیا رێگەمە بۆ هەڵاتن لە هێشەکانی.. هیچی دیت پێ شک دێت؟ - ڕوبەڕو بوونەوە لە کەڵ ڕاستیەکان و هەڵنەهاتن, تاقیت کردۆتەوە؟ +ئاخر... +ئاخر ئەو دەویست هەڵێین، نازانم... +تەنانەت دوای حەمو ماوەیە، هەر هەڵدێم، دەزانی؟ ناتوانی هەڵێی لەو هەستەی وا پێت دەڵێ هەڵێ، ئازاد بە - ئەوە ئازادی نیە! دەست بە سەر کردنی خۆتە لە ناو هەستە درۆیەکان +یانی دەڵێی دەتوانم لە بیری کەم کە چیم دەتوانی بکەم و نەمکرد؟ -کەس نەیدەتوانی! کەس! بۆ تێناگەی! ... +بەڵام لانی کەم دەمتوانی نەهێڵم زیاتر بسوتێ - ئەو کە مردبو، چە فەرقی بوو؟ +لانی کەم کەمتر خۆم خەتابار دەکرد، دەمکوت هەوڵم دا، نەبو -چاو لە سەر دەستت کە، ئەوەشت بیر نایە؟ دوای ئەو حەمو ساڵێ دەستت هەر جێی دیارە -جێی سوتانی دەسگیرەی درگای ماشێنە +درۆم پێ دەڵێی! من بیرم نایە! -درۆ بە خۆت بڵێ! وەک ئەوەی لە کەنار گۆمێک پڕ لە ماسی مردبو، ئەوەش درۆ بکە، ئەو درۆیەیان کەمێک دڵخۆشترت دەکات +ڕاست دەکەی.. ئەی بۆ دەڵێن درۆ خراپە؟ -درۆ ڕاستیەکان دەشارێتەوە، درۆ رێگایەکە بۆ ئەوەی ناخۆشی ڕاستیەکان لە ناو بەرین، درۆ کردن دەبێتە هۆی ئەوەی کە خۆمان کەسێکی باشتر ببینین +یانی درۆ باشە؟ -درۆ خراپە رێبواڕ، درۆ کردن لە گەڵ خۆت، لە گەڵ یەکی دی، راستیەکان تاڵن، مەیشارەوە، لێ هەڵ مەیە. ... -لە ئەوەڵەوە هەر ئەوە دەڵێم، هەڵ مەیە، بمێنەوە شەڕ بکە +ئاخر...ئاخر ئەو شەڕی نەکرد...ئمم... ئەرێ... شەڕ نەکەی دەمری، دەبێت بۆ ئاواتەکانت شەڕ بکەی - هەندێک کاتیش تۆ ئاواتی کەسێک نی، شەڕت بۆ ناکات، ئینجا ئەو کەسە لای تۆ دەمریت + شێوازێکی نوێی مردنە؟ - ئەرێ، ئەوکات ئەو کەسە هەرچیش بکا، مردوە دی، لای تۆ زیندو نابێتەوە، چون تۆ بە مردوی دەبینی+ئەگەر ڕامان بگۆڕێ چی؟ زیندو دەبێتەوە؟ -ئێمە ئینسانەکان بۆ ئەوەی لاشەی مردۆکانمان بۆن نەگرێت، زوو دەینێژین، هەر بۆیە گەر زیندوش بێت، لە ژێر خاک بۆخۆی دەمرێت +تۆزێک دڵڕەقانە نیە؟-رێبوڕار گیان، دڵ رەقی ئەوەیە شەڕت بۆ نەکەن +دڵ ڕەقی ئەوەیە کە پشتت چۆڵ کەن - ئافەرین +کاکە ئامانج، توخدا دەمبەی بۆ دوکان؟ - وەرە باوەشم بتبەم، بەستەنیت بۆ بکڕم یان قایسی؟ + ناکرێت هەردوکیان بێت؟ لە گەڵ شوکۆلات؟ - جەلێ چکۆلەی بقوربان، ددانەکانت خراپ دەبن + من گەورەم، چکۆلە نیم -بڵام هەرچی بیت کوڕە بچکۆلەی منی، وا نیە؟ +با وایە - ئافەڕین کوڕی خۆم، ماچێک بدە بە بابەی وەختی هەڵاتنە + بابە خۆشم دەوێی -منیش خۆشم دەوێی ڕۆڵە ______________________+کاکە ئامانج !کاکە ئامانج! راوەستە ماندو بوم... شتێکم بیر هاتەوە -چی بوە رۆڵە گیان +بۆ دموچاویم بیر نایەتەوە؟ -کەس لە بیری نیە، حەموی سوتابو، حەمو هەر رەشایی جەستەیمان بیرە +ئەی کاکە، دەچێت بۆ بەهەشت؟ -رای خۆت چیە؟ +من نازانم بەهەشت چۆنە، دایکم دەیکوت بەهەشت نیە -دایکت ڕاست دەکا +ئەی ئەوە چیە خەڵکی دی باسی دەکەن -نازانم، تۆ باوەڕت بە قسەی دایکت نیە؟ + با باوەڕم هەیە ، بەڵام پێم خۆشە بەهەشت ڕاست بێت، ئەوجار لێ دەتوانم بیبینم، وا نیە؟ زۆر خۆش دەبێت ئەودەم:) -دی ئەوجار کاتێک ئەو باوەری نەبو، دەچێت بۆ جەهەنەم، ئێمەش دەبێت بچین بۆ ئەوە + ئەوێ چۆنە؟ چۆن دەتوانین بچین؟ - دەبێت کاری خراپ بکەی + ئەوەم پێ خۆشە نیە -دی باشە ڕۆڵە، بەستەنیەکەت بخۆ تواوە حەموی ... +کاکە، دەڵێم قەیناکە کاری خراپ بکەین؟ من بیری دایکم دەکەم -منیش بیری دەکەم ... +کاکە، دایە بۆ رۆی ؟ -نازانم ڕۆڵە، کەس نازانێت ...___________________________+ کاکە ئامانج، کاکە ئامانج، هەستە لە خەو - بۆ چیبوە بقوربان +حەمو شتێک خەریکە لە ناو دەچێت، هەستە با بڕۆین لێرە - مەترسە بەرخم، هیچ شتێک ڕوو نادات + دڵنیای؟ من خەونم دیت ئێمە لە ناو چوین - وەرە باوەشم، هیچ نیە بەس خەونت دیوە +بەڵام دایەش لەوێ بوو -چی دەکوت؟ +هیچ، بێ دەنگ بوو- هیچت پێ نەکوت؟ +نەمدەتوانی، دمم بەسترابو، ئەویش هیچی نەدەکوت - دی چیبو؟ +هەستا ڕۆی، منیش هەروا ڕاوەستابوم، دەست و لاقیشم نەبو، دواتر لە هاتەوە، لە باوەشی کردم، منیش خۆم تێ هاڵاند +دەزانی دوایی چی بو؟ -چی بو رۆڵە؟  + فڕێی دام، پێی لە سەرم نا - بۆ؟ +بیرم نایە، بەڵام بە توندی قیژاندی، کوتی حەمو شتێک وێران بوو، هەڵێن ئامانج، ڕێبواری ماچێک کردو و لیوانێکی ئاو کە بۆی هێنابو پێیدا کە بیخوات. -ها بەرخم، ئاو بخۆ، هیچ نیە دەی خێر دەبێت + کاکە، ئێمە بۆ خەون دەبینین؟ - بەقوربان خەوتن جۆرێک تاقی کردنەوەی مردنە و خەونەکانیش «تجسم» ڕوحمانە کە ئازاد بۆخۆی دەگەڕێت + دی بۆ ڕوحمان شتی ناخۆش پیشان ئێمە دەدات؟ - دڵی کاکەی، ئێمە بە مێشکمان ڕوحمان پیس دەکەین و لە ناوی دەبەین و هەر بۆیەش سەری لێ دەشێوێت +بۆ مێشکی ئێمە چی دەکات؟ -بیرۆکەی ناحەز و قسەی ناحەز و یان هەڵسوکەوتی ناحەز، چە بۆخۆمان بیکەین و چە کەسێک بەرانبەر بە ئێمە بیکات، برینەکانی لە شەر ڕوح دەمێنێتەوە +ڕوح بریندار دەبێت؟ ئەویش خێنی لێ دێت؟ - نا بقوربان، ڕوح خێنی لێ نایە ،برینەکانی ڕووح قەت چاک نابنەوە و دەمێنەوە +ئەی دەبێت چی بکەین؟-هیچمان لە دەست نایەت ڕۆڵە، گەر دونیا بیهەوێت بە سەرت دا خراپ بێت، کاری بەوە نیە لە کوێی، گەر کێشەیەکت هەبێت، گرینگ نیە لە کوێ ئەو کێشەیەت هەر لە گەڵ گەر کەسێک بیهەوێت بەجێت بێڵێت، گرینگ نیە تۆ چۆنیت و کێی، دەڕوا، دەمەوێ ئەوەت پێ بڵێم هەڵمەیە لە وێرانی و دانیشە و ببینە کە حەمو شتێک لە ناو دەچێت و دواتر.. + دواتر چی کاکە ئامانج -گەر هێزت تێدا مابو، چاکی کەوە ، یان... یان بڕۆ   +دی بۆ لە ئەوەڵەوە نەڕۆم؟ - چون وا فێرنابی کە ژیان چۆنە و سەختی نابینی، قەت هەڵمەیە لە کێشەکانت +باشە کاکە، وەرە بخەوینەوە - تۆ بخەوە رۆڵە گیان، من ئاگام لە وڵات دەبێت، ئێرە خەتەرناکە، دەعبای گۆشت خۆری زۆرە + باشع کاکە، من خەوتم -بخەوە بقوربان، ئاگام ڵێتە ------------- شەوگارێکی درێژ بوو، ئامانج و ڕێبوار بیری دایکیان دەکرد، ئەو دو برایە ماوەیەکی زۆر لە سووتانی بنەماڵەکەیان تێ نەپەڕیبو، سێ دانە یەتیم و ئاوارە کە بێکەوە ژیانی سەختی خۆیان بە سەر دەبرد، لە ناکاو وێران دەبن و غەریب و بێ دایک و باب لە نێو چیاکان دا ژیان دەکەن ڕوبار خوشکەی دو براکەی ئێمە، لە ناکاو گوم دەبێت و کەس نازانێت لە کوێیە، بەڵام ئامانج ...بەڵام ئامانج دەیزانی لە شوێنک لەم دارستانەدا روحی خۆشکیان هەیە، هەستی پێ دەکرد و کاتی بەیانی هاتبو، کاتی ڕویشتن، یەک حەفتە بو کە شەوانە نەنوستبو... ------------- +کاکە ئامانج برسیمە کاتێک ئەوەی کوت خەریبو چاوی خەواڵوی هەڵدەگڵۆفی -وەرە بقوربان، کەمێک نانە ڕەقە و پنیرمان ماوە، تا سبەی دەگەینە ئاوایی بەشمان دەکات بێکەوە نانیان دەخوارد... +کاکە، خەمۆکی چۆنە؟ -خەمۆکی شێوازێک لە ناڕاحەت بوونە لە رادەیەکی قورستر دا +یانی چۆن؟ -کاتێک کەسەکان شتێکیان لە بە سەر دێت کە زۆر ناڕاحەت دەبن و حەمو چرکەو ساتێک ئەو ڕوداوە لە مێشکیان دە دوبارە دەکەنەوە، واتە توشی خەمۆکی دەبن + وەک ئەوەی کە ئێمە حەمو شەوێک باسی ئەوە دەکەین کە دایە رۆی بە جێی هێشتین؟ -ئەرێ ڕۆڵە، وەک ئەوەی حەمو رۆژێک دایکمان بمرێت، ئێمە هەر چاو بە گریانین بۆی +کاکە من پێم خۆ نیە خەمۆک بم -رێبوارگیان، تا ژیان ئەو شتەی نەیهەوێن فێرت نەکات، هەر عەزێتت دەکات + کاکە، ئێمە چی فێر دەبین لەوەی کە دایکمان لە ناکاو بە جێی هێشتین؟ -فێر دەبین کە هیچ کەسێک حەمیشە نیە و فێرمان دەکەت کەسەکان حەمو کاتین و بەو جۆرە لە داهاتودا کە لەم چەشنە رووداوانەمان دیت کەمتر زیز دەبین و عادەت دەگرین +کاکە ژیان چی لێمە دەوێت؟ - نازانم ڕۆڵە... کاتێک ئامانج ئەوەی کوت، گەیشتبونە لێواری روبارەکە +کاکە، رووباری خوشکم لە کوێیە؟ - لەم نزیکانەیە بقوربان + ئەی بۆ نایات بۆ لای ئێمە؟ - ئاخر ئەو لە پێشەوە دەڕوات تا ئاگای لە ئێمە بێت و رێگامان بۆ پەیدا کات+ بۆ کاکە ئێمە دەچین بۆ کوێ؟ - ئێمە بە شۆن رووبار دا دەچین ئەوەی لە کاتێک دا کوت کە سەری داخستبو و لە شۆن خوڕەی ئاو دا لە کەنار روباڕ دانیشتبو و دسەتی دەشت -دەبێت بێرەدا بچینە خوارێ، بە شۆن ڕوبارەکەدا، بزانیم بۆ کوێمان دەبات + کاکە ڕووبار ئێمە بۆ کوێ دەبات؟ - پێی نەکوتم، با برۆین بزانین بۆ کوێمان دەبات رێبوار دڵی کەمێک خۆش بوو کە کاکەی بە بزەی لێوی بانگی کرد کە بڕۆن و سەریان داخست لە شۆن ڕووبار و ماسیەکانی کە بە پەلە خۆیان لە کەنار دور دەخستەوە +کاکە، ڕووباری خوشکیشم لە شۆن ئەم رووبارە رۆیشتوە؟ -ئەرێ +بۆ کاکە، بۆ بەرەو سەرێ نەچۆین؟یان نەپەڕینەوە؟ -چونکە ڕوبارەکان سەرکێشن و ئازادن، حەمیشە دەڕۆن بەرەو دەریا + بۆ دەچن بەرەو دەریا؟ - تا ئازاد بن + دادەی منیش رۆی ئازاد بێت؟ -ئەرێ، دادەی تۆش  +منیش دەمەوێت ئازاد بم لە پڕ دا گوێیان لە دەنگی چەند ئەسپێکی کێوی بوو کە هاتبون لە قەراغ ڕووبار ئاو بخۆنەوە + کاکە کاکە، ئەسپ سوور و سپی، چەن جوانننن، بۆ نەیانگرین بە ئەوان برۆین؟ -بقوربان، ئەسپیش وێنەی ڕووبار کاتێک ئازادە جوانە ئێمە کانێک ئاو ڕادەگرین، قەوزە دەگرێت و خراپ دەبێت-بەڵام دیوتە ئەم ڕووبارە چەندە جوانە کاتێک بە ئیشتیای خۆی رێگای دەپێوێت؟ + ئەرێ - هەر بۆیەش دایە ئەسپی خۆش دەویست، بەڵام رقی لەوانە بو کە سواری ئەسپ دەبن ئەسپەکان وەک ئەوەی دموچاوی شەلاقیان دیبێت، خێرا لێیان دورکەوتنەوە +کاکە بۆ هەڵاتن، خۆ ئێمە کارمان پێیان نەبو، ئێمە خۆشمان دەویستن -حیسانەکان هەندێک کار دەکەن کە ئاژەڵەکان ئازار دەبینن و هەر بۆیەش ئەوان فێر دەبن هیچکات متمانە بە مروڤ نەکەن + خۆ ئێمە خراپ نین - لە راستیدا کەسە خراپەکانیش، بۆخۆیان خراپ نین و کات و مەکان دەبێتە هۆی ئەوەی کە بۆ سودی خۆیان خراپ ببن و زوڵم لە ئاژەڵەکان و مرۆڤەکانی دیکە بکەن +من نامەوێت خراپ بم - تۆ خراپ نی جەرگی من +ئێمە بەس مرۆڤین؟ ئەوە خراپه؟ - نا خراپ نیە بەرخم، ئێمەش ئاژەڵین، هەر کەسێکیش کە ئاژەڵی دەرونی خۆی دۆزیەوە، ئەوکات دەتوانێ لە گەڵ سروشت یێک بێتەوە + کاکە دەتوانم من ماسی بم؟ - بۆ ناتوانی؟ تۆ ببمە ماسی  + ئەی تۆ چی کاکە؟ -من؟ نازانم، هێستا حەیوانی دەرونم نەدیتۆتەوە + بەڕای من تۆ ماری -بۆ؟ +نازانم، ڕووبار دەیکوت کاکت مارە -دەی گەر وایە با منیش مار بم، کێشەی چیە ------- بێکەوە پێدەکەنین و دەرۆیشتن...ڕووبار لە شۆن دەریا؟ یان ئەسپ و مار لە کۆڵ دا؟ کەس نەیدەزانی...-----ــــــــــــــــــــــــــــــــدو براکە ماوەیەکی زۆر پێڵاویان لە کەنار ڕووبار ماندو کردبو و گەیشتبونە جێیەک کە چی دی رێگای چونە پێشێیان نەبو - ئەوشۆ لێرە دەنوین لە کەنار ئەم گۆمە + کاکە ماسی تێدان، ماسی سوور - ئەرێ زۆر جوانن، ئاگات لە خۆت بێت بار و بوخچەیان دانا و لە نانە ڕەقەکەی کە لە ئاوای پێشو وەریان گرتبوخەریبون دەیانخوارد و کاتی نوستن هاتو و وەک هەمیشە ئامانج بە خەبەر بوو شەوێکی درێژ و گۆمێکی پڕ لە ماسی  مانگی دەدرەوشاوە و ماسیەکان لە خۆشی ئەو لە سەر ئاوەکە گەوەیان دەکرد، ئامانج خەو دایگرتبو و سەری بۆ ڕانەدەوستا، خەوی لێ کەوت لە خەونی دا چەند کەسێک لە سەر ئاوەکە سەمایان دەکرد سەرەنجی دا ماسیەکان بە تیشکی رووناکی مانگ  لە سەر بەرگێکی لیلووپەڕ هاتبونە سەما و لە بەر خۆیانەوە دەیانخێند.. ڕوبار ئەو شەوە زۆر دڵخۆش بوو چونکە میوانی هاتبو خشە خشی قامێشەکان گۆمەکەی ڕازاندبۆوە و مانگ لە جاران زیاتر ئەدرەوشیەوە، لە پڕ دا حەمو شتێک لە بەر چاوی ڕەش بوو بە دەنگ هەستا لە خەوــــــــــــــــــــــــــــ + کاکە کاکە، دادە خەریکە دەمخنکێنێت تا چاوی هەڵێنا، ئامانج لە گۆمەکە دا نوقم بو خۆی تێ هاویشت کە دەری بێنێتەوە، بەڵام ریشەی دارەکەی بن گۆمەکە، ئەمانی نەدا، گیاکان تێی هاڵابون  ماسیەکان سەمایان دەکرد سەمای شادی دو براکە بە خوشکەکەیان گەیشتبون لە کەنار گۆمەکەی وا دایکیان بڵێنی پێدابون بیانی زوو چۆلەکە بە ئاواز خەبەری دا سێ تەرمی سپی لە کەنار گۆمەکن، سێ تەرمی سپی لە کەنار گۆمەکەن...*************ماسیەکان لە سەر تەرمەکان سەمایان دەکرد...، مانگ وەک ئەوەی کە کۆتا جاری بێت دەدرەوشاوە و شەپۆلەکان نەرم نەرم تەرمەکانیان بەرێ دەکرد بۆ کەنارڕووبار لە مێژ بوو میوانی نەهاتبوتەمێکی سارد ڕووباری داگرتبوماسیەکان سەمایان دەکرد، ماسیەکان میوانیان بۆ هاتبو...</description><category>sia</category><author>sia</author><pubDate>Fri, 20 Dec 2024 21:27:18 +0330</pubDate></item><item><title>bypass NX - PIE in linux X86 (writeup about an picoctf2018&#39;s challange)</title><link>https://virgool.ir/@l14ck3r0x01/bypass-nx-pie-in-linux-x86-writeup-about-an-picoctf2018s-challange-osl8nqmyyuxf</link><description>سلام خدمت دوستان عزیز :)لازم می دونم به شما اعلام بدارم که مفتخر شدید اولین پست من را بخوانید :)امیدورام در حین خواندن خسته نشوید چون مبحث کمی طولانی و سنگینه ! بعضی از مطالب رو عمدا جا انداختم که بحث بیشتر از این باز نشود و نوشته خیلی طولانی نشود اما اگر جای سوال داشتید و براتون غیرقابل فهم بود، حتما سوال کنید من جوابتان را خواهم داد.قبل از شروع با این نکته هم اشاره کنم که سعی کردم کلمات قلمبه و سلمبه را زیاد به کار نبرم تا کمی از سنگینی مطلب بکاهم . یک مقدمه کوچکیکی از مشکلاتی که هنگام اکسپلویت کردن یک نرم افزار پیش می آید،بیت `NX (Non - Execute)` است.در واقع  یک قانون ساده برای باینری فایل های لینوکس (elf) تعیین می کند که به هیچ وجه بر روی پشته (stack) هیچ دستوری اجرا نشود! با این حال ما نمی توانیم از شلکد برای مقاصد خود استفاده کنیم!پس چیکار کنیم؟‌ یکی از راه های که برای دور زدن این محدودیت استفاده می شود بازگشت به کتابخانه libc است.بلای دیگری که  وجود دارد `PIE(Position-independent code)` است، مکانیزم `PIE` آدرس کد های که در حافظه بارگزاری می شوند را  تصادفی می کند و دسترسی به توابع را کمی سخت می کند.تقریبا تمام برنامه های که امروزه استفاده می شوند به صورت پیش فرض این مکانیزم ها را برای محافظ از خود به کار میگیرند.ببینیم libc چی هست !اگر به man پیج `libc` نگاه کنیم می بینیم که نوشته شده است : اصطلاح libc به صورت گسترده به جای مخفف standard C libarary استفاده می شود.در واقع کتابخانه استاندارد سی دارای تمام توابع استانداری است که در برنامه های سی استفاده می شوند، توابعی همچون puts , system و …برای درک بیشتر این که چرا به `libc` باز می گردیم ، یک برنامه ساده C را بدون هیچ include می نویسیم و کامپایل می کنیم و با دستور `ldd`  بررسی می کنیم که به چه کتابخانه های لینک شده و همانطور که می بینید به صورت خودکار کتابخانه `libc` به برنامه ما لینک شده، و دلیل استفاده از `libc` هم برای دور زدن محدودیت همین ویژگی است،یعنی اینکه در بدترین شرایط هم ما می توانیم از کتابخانه libc استفاده کنیم !first exampleچطور از libc استفاده کنیم؟وقتی تابعی در برنامه فراخوانی می شود `EIP` برابر با آدرس تابع قرار می گیرد و تابع اجرا می شود و این موضوع هم برای توابع کتابخانه ای ثابت است و وقتی بتوانیم آدرس `EIP` را باز نویسی کنیم ، می توانیم تابع دلخواه خود را اجرا کنیم،‌که در این مثال می خواهیم تابع `system` را برای در اجرای دستور دلخواه خود فراخوانی کنیم.مشکل نه چندان مشکل ! (PIE)خب کمی هم در مورد `PIE` حرف بزنیم،اول اینکه با `ASLR` چند شباهت و تفاوت دارند.اولین شباهتشون این است که کار هر دو تصادفی کردن مکان های از حافظه است تفاوتشون این است که `ASLR` پشته را تصادفی می کند اما `PIE` آدرس های بخش code که در پایین تر قسمت حافظه بارگزاری می شود را تصادفی می کند !دور زدن `PIE` فقط یه محاسبه کوچک  جمع و تفریق می خواهد که اول با این شروع می کنیم.بالا زدن آستین ها ! در آغاز ،برنامه ی را که می خواهیم برای آن اکسپلویت بنویسیم ، هم نگاهی بندازیم.برنامه ی ما یکی از چالش های PicoCTF2018 در بخش binary explotion با 250 امتیاز می باشد.vuln codeبا کمی بررسی می توانیم ببینیم که در تابع`main` آدرس چند  تابع استاندار c را برای ما نمایش می دهد و بعدش تابع آسیب پزیر فراخوانی می شود.یک متغیر هم وجود دارد که دارای رشته `&#34;/bin/sh&#34;` برای اجرا کردن یه پوسته می باشد.اگر دقت کنید می بینید که در تابع `vuln` یک رشته از کاربر دریافت می شود و دوباره همان رشته چاپ می شود.اما تابعی که رشته را می گیرد باعث تمام این خراب کاری ها است ، تابع `gets` !تابع دردسر ساز (gets)این تابع هیچ کنترلی برای میزان رشته وارد شده ندارد و هر چه را دریافت کرده باشد در متغیری که به عنوان اولین آرگومان به او داده شده ،می نویسد فارغ از آن که این متغیر ظرفیت آن را دارد یا خیر !این مشکل می تواند باعث باگی به اسم سرریز جریان حافظه یا `buffer over flow`  شود; نحوه رخ دادن مشکل هم به صورتی است که وقتی فضای تعبیه شده برای متغیر پر می شود از قسمت های بعدی حافظه برای ذخیره داده استفاده می کند. عمق ماجرا !چند ثبات که لازم است با آنها آشنا باشید را معرفی کنم:ثبات `ESP`، این ثبات به ابتدای پشته یا همان stack تابع  اشاره می کند.ثبات `EBP` ، این ثبات به انتهای پشته اشاره می کند.ثبات `EIP` ، آدرس دستور بعدی که قرار است توسط cpu اجرا شود را در خود ذخیره می کند !اولین جای که بعد از پر شدن حافظه تعبیه شده برای متغیر/متغیر ها تحت تاثیر قرار می گیرد `EBP` یا اشاره گر پایه است و بعد از آن `ReturnAddress` است!اگر ما بتوانیم آدرس بازگشت را بازنویسی کنیم ، در واقع جریان برنامه را در دست گرفتیم ! چطور ؟به این صورت که وقتی یک تابع از جای فراخوانی می شود ، آدرس آن مکان به stack وارد می شود و بعد از اتمام کار تابع فراخوانی شده، آن آدرس در `EIP` قرار می گیرد و بدین صورت اگر ما آن را باز نویسی کنیم ، برنامه را می توانیم در دستانمان بچرخانیم :).شروع تحلیل برنامه را با آپشن m32- کامپایل می کنیم که مطمئن باشیم  ۳۲ بیت خواهد بود.`$ gcc vuln.c -m32 -o vuln`جالبی موضوع اینجاست که `gcc‍‍` به صورت پیش فرض مکانیزم های nx - pie رو برای ما فعال خواهد کرد :)‌))))چون سورس کد برنامه را در دست داریم تحلیل کردن ایستا و پویا دیگر معنای ندارد  و انجام دادن آن فقط وقت ما را خواهد گرفت پس مستقیم پیش به سوی بایپس `PIE` می رویم.اگر یادتان باشد گفتیم که می خواهیم تابع `system` را به کار بگیریم و آدرس آن را در `ReturnAddress` بازنویسی کنیم ، ولی چطور آدرس آن را پیدا کنیم ؟خب با دیباگر `gdb` شروع به کار می کنیم‌ و آدرس تابع را از او می پرسیم!برای این کار برنامه را با `gdb`  اجرا می کنیم و دستورات زیر را به ترتیب در پوسته `gdb` وارد می کنیم.(gdb) br main&#xA;(gdb) r&#xA;(gdb) x system Examine system addressشاید برایتان سوال باشد که چرا ما یک توقف بر روی تابع `main` گذاشتیم؟فکر کنم تا اینجا متوجه شده باشید که وقتی برنامه را اجرا کنیم نمی توانیم کار خاصی با دیباگر انجام دهیم و اگر هم آن را اجرا نکنیم آدرسی وجود نخواهد داشت تا ما دنبال آن بگردیم ، پس توقف بر روی تابع `main` همیشه بهترین انتخاب برای نقطه توقف است.(البته نه همیشه!)با توجه به نتیجه، آدرس سمت چپ یعنی  `0xf7deec00`  مورد نیاز ما می باشد اما مشکل اینجاست که PIE در هر بار اجرا این آدرس را عوض می کند و تنها راه ما این است که فاصله آن را با یکی از توابع استاندارد دیگری که در ابتدای برنامه نمایش داده می شوند، محاسبه کرد و بعد از آن دوباره با همین فاصله بتوان آدرس دقیق آن را پیدا کرد, من تابع ‍`puts` را انتخاب می کنم و آدرسش را درخواست می کنم و بعد از تفریق کردن با آدرس `system` ، فاصله پیدا می شود :).Examine puts address and calculate offsetنوشتن اکسپلویت :)وقت آن رسیده است با استفاده از ماژول `pwn` از فریمورک توسعه اکسپلویت و CTF ، به نام pwntools و  زبان python اکسپلویت خودمان را بنویسیم.اول از همه باید مکانی که در آن می توانیم ‍`EIP` را بازنویسی کنیم ، پیدا کنیم. این کار را می توانیم به صورت دستی انجام دهیم یا اینکه یک تابع ساده بنویسیم تا اینکار را برای ما انجام دهد.پیدا کردن آفست eipexploit part 1ماژول های مورد نیاز را وارد برنامه می کنیم و شروع به کد زدن می کنیم.تابع ما یک elf دریافت می کند و آن را اجرا می کند و بعد با فرستادن یه الگوی ۳۰۰ کاراکتری به برنامه باعث شکست برنامه می شود که از طریق فایل core (بعد از شکست یک برنامه تحت دیباگر درست می شود و جزئیات برنامه هنگام شکست در آن وجود دارد) می توانیم مقدار رجیستر `EIP` را پیدا کنیم و با تابع  `cyclic_find` میزان رشته مورد نیاز برای رسیدن به `EIP` را پیدا کنیم تا بتوانیم به درستی آن را بازنویسی کنیم ‌ و این فاصله را  retrun می کنیم.دلیل استفاده از تابع `sleep` هم این است که فایل core به درستی درست شود چون ساختن آن کمی طول می کشد و زمان ساخت آن در هر سیستمی بستگی به حجم برنامه و منابع دارد که اگر این خط را حذف کنید می بینید که بعد از ۲ روز هم اکسپلویت اجرا نخواهد شد :)  چند خط زیر را هم به فایل exploit.py اضافه می کنیم.exploit part 2در خط اول فایل elf را وارد برنامه کردم،و آن را به تابع خودمون فرستادم تا فاصله `eip` از `esp` را برای ما پیدا کند و بعد مقدار برگشتی تابع را با یکی از شئ های زیر مجموعه `pwn` که برای لاگ کردن بر روی ترمینال استفاده می شود روی ترمینال چاپ کردم و بعد هم فاصله `puts` و `system` را که در بالاتر به دست آوردیم  به یک متغیر دادم. پیدا کردن آدرس تابع systemحال باید برنامه را اجرا کنیم و آدرس `puts` را در آن اجرا پیدا کنیم تا  آدرس `system` را به وسیله آن پیدا کنیم،چون `PIE` عزیز با هر بار اجرا آدرس ها را تغیر می دهد! خب اگر برنامه را اجرا کنید می بینید که خودش آدرس تابع `puts`  را برای ما چاپ می کند,فقط ما باید آن را جدا کنیم که در اینجا کتابخانه `re` به کمک ما می آید.exploit part 3من برنامه را اجرا کردم و خروجیش را در متغیر `prompt` ریختم و با استفاده از متود `findall` از ماژول `re` قسمت های مورد نظر خودمو  جدا کردم و چون نوع آنها `str` است من به `int` تبدیل کردم و بعد هم چاپشون کردم.آدرس `bin_sh` بعدا برای اجرا کردن یک پوسته توسط تابع `system`  به کارمان می آمد ، پس آن را هم جدا میکنیم.و با استفاده از عددی که در هنگام تحلیل کردن، از تفریق کردن آدرس تابع `puts` و `system` به دست آوردیم، استفاده می کنیم تا دوباره بتوانیم آدرس `system` را پیدا کنیم، یک معادله جبری ساده :).چینش payload حال بیاید payalod خود را بچینیم و  کار را به پایان برسانیم !اما یه سوال دیگه هم اینجا پیش می آید که اگر آدرس `EIP` را با آدرس `system` هم بازنویسی کنیم خب چطوری به تابع پارامتر بفرستیم!؟بعد از اینکه آدرسس `EIP` بازنویسی شد بعد از اون ۴ بایت junk میزاریم و بعد از اون هم پارمتر های تابع دقیقا به شکل زیر :system + &#39;Junk&#39; + params‍ در واقع ۴ بایت junk که ما گذاشتیم قرار است بعد از اتمام کار تابع `system` ،در `EIP` قرار گیرد و فرایند برنامه از آنجا ادامه پیدا کند و به زبان ساده تر `ReturnAddress` تابع `system` ما خواهد بود و  چون این برای ما مهم نیست پس ۴ بایت دلخواه در آن می نویسیم.در واقع این زمانی مهم می شود که شما بخواید فراخوانی ها را زنجیره ای کنید و توابع متعددی را استفاده نمایید.پس چند خط زیر را  در ادامه اضافه می کنیم :exploit part 4 (end) به اندازه متغیر `eip_write_offset` در پیلودمان بایت اضافه می نویسیم تا بتوانیم دقیقا به پشت `EIP` برسیم و به درستی `EIP` را بازنویسی کنیم ،بعد آدرس تابع `system`  را اضافه می کنیم و  ۴ بایت دیگر هم برای `ReturnAddress`  و در آخر  هم آدرس رشته `&#34;/bin/sh&#34;` که خود برنامه به ما داده  بود را به عنوان آرگومان برای تابع می فرستیم تا آن را برای ما اجرا کند.در خط بعدی پیلود را برای برنامه فرستادم و اجرای برنامه را به صورت تعاملی به کاربر بازگشت دادم.این پیلود ما در واقع توسط تابع `gets` که در بالاتر به آن پرداختیم گرفته می شود و پردازش می شود و چون حجم داده ما از میزان حافظه تعبیه شده برای متغیر بیشتر است پس از حد خود فراتر رفته و موجب بازنویسی مکان های بر روی حافظه می شود.من روی `system_addr` و `bin_sh` یک تابع فراخونی کردم،‌ کار اصلی این تابع این است که بر اساس آپشن های که به عنوان آرگومان به او داده می شود، آدرس ها را با فرمت `big_endian` یا `little_endian` به شما می دهد که به صورت پیش فرض `little_endian` است و یک نکته دیگر هم بگویم که چون برنامه ما ۳۲ بیت بود به همین خاطر `p32` را انتخاب کردم(نسخه ۶۴ بیت آن با اسم `p64` موجود است)،دلیل استفاده از این توابع این است که آدرس های مد نظر ما به درستی در حافظه قرار بگیرند.تکمیل فراینداکسپلویت نهای به این صورت می باشد.exploit code و حال موقع اجرای آن رسیده است :)))))))$ python exploit.pyresualtو بعد از تمام شدن کار می تونید ببینید که شل برقرار هستش ? اما چند نکته هم اینجا بگم که تمام آدرس ها و افست ها به ریلیز سیستم عامل و `libc` بستگی دارد و متفاوت با اعداد من خواهند بود و اینم بگم که همیشه لازم نیست. شما آدرس دو تابع را بدانید و مشغول جمع تفریق شود ، در واقع می توانید با استفاده از آدرس یک تابع که توسط برنامه کشف می کنید ،با سایت های مثل https://libc.blukat.me در دیتابیس هایش سرچ کنید و با آدرس تابع خودتون ،آدرس تابع های مفید دیگر را هم پیدا کنید یا اینکه می توانید فاصله آن تابع را با آدرس پایه libc محاسبه کنید ، خلاصه بگم دستتون بازه ... :)امیدورام خسته نشده باشید ;)از شما ممنونم که وقت خود را صرف خواندن این نوشته کردید ، منتظر نظرات شما هستم :)</description><category>sia</category><author>sia</author><pubDate>Mon, 21 Oct 2019 13:55:16 +0330</pubDate></item></channel></rss>