အားနည်းချက်များကိုခေါင်းပုံဖြတ်ကြည့်ခြင်း

ငါဒီခေါင်းစဉ်ကိုဆက်လက်ဆွေးနွေးရန်မျှော်လင့်နေစဉ်, ငါ့ကိုသင်အားနည်းချက်များကိုအပေါ်သမိုင်း, သီအိုရီနှင့်အလေ့အကျင့်အနည်းငယ်ပြောပြပါရစေ။ လုံခြုံရေးချို့ယွင်းချက်များစွာသည်ကုန်ကျစရိတ်များနိုင်သည်ကိုကျွန်ုပ်တို့အားလုံးကြားသိရသည်။ ကျွန်ုပ်တို့ဆော့ (ဖ်) ဝဲအားအဆင့်မြှင့်တင်ရန်လိုအပ်သည်ကိုကျွန်ုပ်တို့အားလုံးသိကြပြီး၊ များစွာသောမွမ်းမံမှုများသည်လုံခြုံရေး bug များကြောင့်ဖြစ်သည်။ သို့သော်ယနေ့ငါဤအမှားများကိုမည်သို့တွေ့ရှိပြီးမည်သို့အသုံးချသည်ကိုအနည်းငယ်ပြောပြလိမ့်မည်။ this သို့သော်၎င်းမတိုင်မီကျွန်ုပ်တို့သည်ပိုမိုကောင်းမွန်သောခြုံငုံသုံးသပ်မှုရရှိရန်အသေးစိတ်အချက်အလက်အနည်းငယ်ကိုရှင်းလင်းသွားပါမည်။

သင်မစတင်မှီ

ပထမ ဦး ဆုံးကျွန်တော်ပြောချင်တာကတော့ကျွန်တော်အသုံးချဖို့သင်ယူခဲ့တဲ့ပထမဆုံးအားနည်းချက်ကိုပဲအာရုံစိုက်တော့မှာပါ Buffer Overflows, ဒီအားနည်းချက်အတွက်ကျနော်တို့ပျော်စရာအမှုအရာလုပ်ဖို့မှတ်ဉာဏ်ထဲမှာစိစစ်အတည်ပြုမရှိခြင်း၏အားသာချက်ကိုယူ။ it ဒါပေမယ့်အကြောင်းအနည်းငယ်ပိုရှင်းပြကြကုန်အံ့။

ဒါကတကယ့်ကမ္ဘာဇာတ်လမ်းမဟုတ်ဘူး

သူတို့မြင်နေတဲ့ဘယ်ပရိုဂရမ်ကိုမဆိုချိုးဖျက်ဖို့သူတို့ကိုငါမတတ်နိုင်ခဲ့ဘူး🙂ပထမကသူတို့ကွန်ပျူတာတွေအတွက်အန္တရာယ်ရှိတယ်၊ ဒုတိယကတော့အဲဒါကငါ့ရဲ့ပုံမှန်စာလုံးအရေအတွက်ထက်ပိုများတယ်။

ကျနော်တို့ 80s မှခရီးစဉ်အပေါ်သွားပါ

ငါပြသမည့်အရာကိုငါပြသမည့်အရာသည်ကျွန်ုပ်၏လက်ပ်တော့တွင်ပြုလုပ်နိုင်သည်။ သို့သော်ယင်းသည်ယနေ့ခေတ်ရိုးရှင်းသောနည်းဖြင့်လုပ်ဆောင်နိုင်သည်ဟုမဆိုလိုပါ။ concepts ဤအယူအဆအများစုကိုအကာအကွယ်မဲ့နည်းလမ်းများနှင့်ရှောင်ဖယ်ရန်နည်းလမ်းအသစ်များအကြိမ်ပေါင်းများစွာအသုံးချပြီးဖြစ်သည် သူတို့ထွက်ပေါ်လာခဲ့သည်😛သို့သော်ကျွန်ုပ်တို့ကိုတစ်နေရာတည်းသို့ပြန်ပို့ပေးသည်၊ ထိုအရာအားလုံးကိုပြောပြရန်နေရာမရှိပါ

သင်၏ပရိုဆက်ဆာပေါ်တွင်အလုပ်လုပ်မည်မဟုတ်ပါ

ငါအရမ်းရိုးရှင်းတဲ့ဥပမာကိုအသုံးပြုတော့မယ်။ ဒါပေမယ့်အစကနေရှင်းရှင်းလင်းလင်းဖြစ်ချင်တယ်၊ အသေးစိတ်အချက်အလက်တွေကများလွန်းပြီးမတူကြဘူး၊ မင်းစမ်းကြည့်ချင်တယ်ဆိုရင်၊ ငါလိုမျိုးဘဲထွက်လာနိုင်သကဲ့သို့ အထူးသဖြင့်ဤနိဒါန်းတွင်ကျွန်ုပ်သည်စကားလုံး ၃၀၀ ကျော်ကိုယူထားပြီးဖြစ်သောကြောင့်ကျွန်ုပ်တို့အချက်ကိုဖြောင့်ဖြောင့်တန်းတန်းရောက်အောင်ပြောနိုင်သည်။

ဘာလဲ ကြားခံလျှံ

ဒီအဖြေကိုရရန်ပထမ ဦး ဆုံးပေါင်းစပ်မှု၏ပထမတစ်ဝက်ကိုကျွန်ုပ်တို့နားလည်ရမည်။

Buffer

အရာအားလုံးသည်ကွန်ပျူတာတစ်လုံးရှိမှတ်ဉာဏ်နှင့်သက်ဆိုင်သဖြင့်သတင်းအချက်အလက်သိုလှောင်ခန်းတစ်မျိုးမျိုးရှိရမည်ဟုယုတ္တိရှိသည်။ ကျနော်တို့အကြောင်းပြောတဲ့အခါ သွင်းအားစု အကျိုးရလဒ်များကျွန်ုပ်တို့သည်အယူအဆကိုတိုက်ရိုက်လာသည် ကြားခံ။ တိုတိုကိုစောင့်ရှောက်ရန်တစ် ကြားခံ ၎င်းသည်ကျွန်ုပ်တို့သတ်မှတ်ထားသောအရွယ်အစားရှိသည့်မှတ်ဉာဏ်နေရာတစ်ခုဖြစ်ပြီးကျွန်ုပ်တို့တွင်သတင်းအချက်အလက်အမြောက်အများကိုသိုလှောင်ထားလိမ့်မည်

အမည်တစ်ခုကဖော်ပြသည့်အတိုင်းကြားခံတစ်ခုအနေနှင့်သတင်းအချက်အလက်နှင့်ပြည့်စုံသည့်အခါဖြည့်ခြင်းများဖြစ်ပေါ်လာသည်။ သို့သော်ယင်းသည်အဘယ်ကြောင့်အရေးကြီးသနည်း။

စုပုံထား

Stacks များဟုလည်းလူသိများသည်၊ ၎င်းတို့သည်ကျွန်ုပ်တို့သည်တတ်နိုင်သမျှစိတ္တဇဒေတာအမျိုးအစားဖြစ်သည် stack သတင်းအချက်အလက်, သူတို့ရဲ့အဓိကဝိသေသလက္ခဏာကိုသူတို့မှာယူရှိသည် LIFO (နောက်ဆုံးအနေဖြင့်)။ ပန်းကန်တွေအကြောင်းတစ်စက္ကန့်စဉ်းစားကြည့်ရအောင်၊ သူတို့ကိုတစ်ခုချင်းစီအပေါ်တစ်ခုစီတင်လိုက်တယ်၊ ပြီးတော့သူတို့ကိုထိပ်ကနေတစ်ခုချင်းစီထုတ်ထုတ်လိုက်တယ်၊ ဒါဆိုငါတို့နောက်ဆုံးထည့်ထားတာက (အပေါ်ဘက်မှာပါ) ) ကျွန်ုပ်တို့သည်ထုတ်ယူမည့်ပထမဆုံးပန်းကန်ဖြစ်သည်။ အကယ်၍ ကျွန်ုပ်တို့သည်တစ်ချိန်တည်းတွင်ပြားတစ်ချပ်သာထုတ်ယူနိုင်ပြီး၎င်းကိုလုပ်ရန်ဆုံးဖြတ်လျှင်သိနိုင်သည်။

အခုသင်အဲဒီသဘောတရားနှစ်ခုကိုသိပြီဆိုရင်၊ သူတို့ကိုကျွန်ုပ်တို့စနစ်တကျစီစဉ်ရမယ်။ ကျွန်တော်တို့လုပ်ဆောင်သောပရိုဂရမ်တစ်ခုချင်းစီတွင်ကိုယ်ပိုင်ရှိသည်ဖြစ်သောကြောင့် stacks များသည်အရေးကြီးသည် ကွပ်မျက် stack။ သို့သော်ဤ stack တစ်ရှိပါတယ် အထူးသဝိသေသကြီးထွားလာတယ်။ သင်သိရန်တစ်ခုတည်းသောအရာမှာပရိုဂရမ်တစ်ခုလည်ပတ်နေစဉ်၊ လုပ်ဆောင်မှုတစ်ခုခေါ်သည့်အခါ၎င်းသည်မှတ်ဉာဏ်ရှိ X နံပါတ်မှနံပါတ် (Xn) သို့သွားသည်။ ဒါပေမယ့်ဆက်လုပ်နိုင်ဖို့နောက်ထပ်အယူအဆကိုနားလည်ရမယ်။

ထောက်ပြ

၎င်းသည်ပရိုဂရမ်မာများစွာကို C လောက၌စတင်သောအခါအရူးအမူးဖြစ်စေသောအယူအဆတစ်ခုဖြစ်သည်။ စင်ကာပူ၏ပရိုဂရမ်းမင်း၏စွမ်းအားသည်ထောက်ပြခြင်းများကြောင့်ဖြစ်သည်။ ၎င်းကိုရိုးရှင်းအောင်ထားရန်၊ မှတ်ဉာဏ်လိပ်စာတစ်ခုသို့ညွှန်ပြသည်။ ဒီဟာကရှုပ်ထွေးတယ်၊ ဒါပေမယ့်သိပ်မရှုပ်ဘူး၊ ငါတို့အားလုံးမှာစက်တွေမှာ RAM ရှိသလား။ ကောင်းပြီ, ဒီကိုတစ် ဦး အဖြစ်သတ်မှတ်နိုင်ပါတယ် လုပ်ကွက်များ၏ဆက်တိုက်အစီအစဉ်ဤတည်နေရာများကိုများသောအားဖြင့် hexadecimal နံပါတ်များ (0 မွ 9 မွ A သို့ F သို့ 0x0, 0x1, 0x6, 0xA, 0xF, 0x10) တို့မှဖော်ပြလေ့ရှိသည်။ ဒီမှာ 0x10 ဆိုတဲ့ထူးဆန်းတဲ့မှတ်စုတစ်ခု NO ညီမျှခြင်းသည် 10 15 ဖြစ်လျှင်၊ ဒdecimalမကိန်းအဖြစ်ပြောင်းလဲလျှင် XNUMX သည်ပြောခြင်းနှင့်အတူတူပင်ဖြစ်လိမ့်မည်။ ၎င်းသည်ပထမ ဦး ဆုံးတစ်ခုထက် ပို၍ ရှုပ်ထွေးသော်လည်း၊

မှတ်တမ်းများ

ပရိုဆက်ဆာများသည်အတော်များများနှင့်အလုပ်လုပ်ကြသည် မှတ်တမ်းများရုပ်ပိုင်းဆိုင်ရာမှတ်ဉာဏ်မှသည်ပရိုဆက်ဆာသို့တည်နေရာများကိုထုတ်လွှင့်ရန်အလုပ်လုပ်သော၊ 64-bits ကိုအသုံးပြုသည့်ဗိသုကာများအတွက်၊ မှတ်ပုံတင်မည့်အရေအတွက်သည်ဤတွင်ဖော်ပြရန်ခက်ခဲပြီးဖော်ပြရန်ခက်ခဲသည်၊ သို့သော်စိတ်ကူးရရန်၊ မှတ်ပုံတင်များသည်ညွှန်ပြသူများနှင့်တူသည်၊ မှတ်ဉာဏ်နေရာ (တည်နေရာ) ။

ယခုလေ့ကျင့်ပါ

ကျွန်ုပ်သည်ယခုအထိသတင်းအချက်အလက်များစွာရရှိသည်ကိုသိသော်လည်းလက်တွေ့တွင်၎င်းတို့သည်ရှုပ်ထွေးသောကိစ္စရပ်များဖြစ်သည်။ ကျွန်ုပ်သည်ရိုးရှင်းသောနည်းလမ်းဖြင့်ရှင်းပြရန်ကြိုးစားသည်၊ ကျွန်ုပ်တို့သည်ကြားခံကိုအသုံးပြုသောပရိုဂရမ်အသေးစားတစ်ခုကိုကျွန်ုပ်တို့သွားတော့မည်။ လျတ်လျှို့ဝှက်ချက်များကိုနားလည်ရန်၎င်းကိုချိုးဖျက်ပါ၊ ၎င်းသည်၎င်းသည်ဒါဟာတကယ့်အစီအစဉ်မဟုတ်ပါ၊ ကျွန်ုပ်တို့သည်ယနေ့အသုံးပြုသောတန်ပြန်မှုများကို“ ရှောင်ရှား” သွားမည်ဖြစ်သည်၊ အရာများသည် before မတိုင်မီမည်သို့လုပ်ဆောင်ခဲ့ပုံနှင့်အချို့သောကြောင့် ပိုမိုရှုပ်ထွေးသောအရာများကိုသင်ယူနိုင်ရန်အတွက်အခြေခံမူများလိုအပ်သည်

GDB

ဒီပရိုဂရမ်ဟာ C ပရိုဂရမ်မာတွေအများဆုံးအသုံးပြုတဲ့ program တစ်ခုဖြစ်ပါတယ်။ ၎င်းရဲ့ကောင်းကျိုးများစွာထဲမှာကျွန်ုပ်တို့ဟာအခုထိပြောနေတာတွေ၊ မှတ်ပုံတင်တွေ၊ stack တွေ၊ ကြားခံစတာတွေစတာတွေအားလုံးကိုကျွန်တော်တို့ကိုမြင်ခွင့်ပြုတာပါပဲ။ ငါတို့ဥပမာအတွက်သုံးမယ့်အစီအစဉ်ကိုကြည့်ရအောင်။

retinput.c

ကိုယ်ပိုင် ခရစ္စတိုဖာ Diaz Riveros

ဒါကရိုးရှင်းတဲ့ပရိုဂရမ်တစ်ခုပါ၊ ငါတို့စာကြည့်တိုက်ကိုသုံးမယ် stdio.h သတင်းအချက်အလက်ရရှိရန်နှင့် terminal တစ်ခုထဲမှာပြသနိုင်ဖို့။ ကျနော်တို့ခေါ်တဲ့ function ကိုမြင်နိုင်ပါသည် return_input အရာကထုတ်ပေးပါတယ် ကြားခံ ကိုခေါ် အခင်းအကျင်းအရာ 30 အရှည်ရှိပါတယ်ရာ bytes (char ဒေတာအမျိုးအစား 1 byte ရှည်လျားသည်) ။

လုပ်ဆောင်ချက် gets(array); console ကိုနှင့် function ကိုအားဖြင့်သတင်းအချက်အလက်တောင်းဆိုပါ printf() array ရဲ့ contents ကိုပြန်လာနှင့်မျက်နှာပြင်ပေါ်မှာပြသထားတယ်။

C ၌ရေးထားသည်အစီအစဉ်ကို function ကိုအတူစတင်သည် main()၎င်းသည် return_input ကိုသာတာဝန်ယူလိမ့်မည်၊ ယခုကျွန်ုပ်တို့အစီအစဉ်ကိုပြုစုမည်။

ကိုယ်ပိုင် ခရစ္စတိုဖာ Diaz Riveros

ငါလုပ်ခဲ့တာတွေအတွက်နည်းနည်းယူကြည့်ရအောင်။ ရွေးချယ်စရာ -ggdb gcc ကိုစနစ်တကျ debug လုပ်ဖို့သတင်းအချက်အလက်နဲ့ program ကို compile လုပ်ဖို့ gcc ကိုပြောတယ်။ -fno-stack-protector ၎င်းသည်ကျွန်ုပ်တို့သည်အသုံးမပြုသင့်သောရွေးချယ်မှုတစ်ခုဖြစ်သည်၊ သို့သော်၎င်းသည် stack အတွင်းရှိကြားခံဖြည့်စွက်ခြင်းကိုထုတ်လုပ်ရန်ဖြစ်နိုင်သောကြောင့်ကျွန်ုပ်တို့အသုံးပြုတော့မည်ဖြစ်သည်။ အဆုံးမှာတော့ငါရလဒ်စမ်းသပ်ပြီးပါပြီ။ ./a.out ငါစုဆောင်းလိုက်တဲ့အချက်အလက်တွေကိုပဲ run လိုက်တယ်၊ သတင်းအချက်အလက်တောင်းတယ်၊ ပြီးတော့ပြန်ပို့တယ်။ အပြေး🙂

သတိပေးချက်များ

ဒီမှာနောက်ထပ်မှတ်စု။ သတိပေးချက်များကိုမြင်ပါသလား ရှင်းနေသည်မှာကျွန်ုပ်တို့သည်ကုဒ်နှင့်အတူအလုပ်လုပ်စဉ်သို့မဟုတ် compile လုပ်သည့်အခါထည့်သွင်းစဉ်းစားရမည့်အရာဖြစ်သည်၊ ၎င်းသည်အနည်းငယ်သာထင်ရှားပြီးယနေ့ function ကိုအသုံးပြုသောပရိုဂရမ်အနည်းငယ်သာရှိသည်။ gets() ကုဒ်ထဲမှာ။ Gentoo ၏အားသာချက်တစ်ခုမှာပရိုဂရမ်တစ်ခုစီကိုပြုစုခြင်းဖြင့်အမှားအယွင်းများကိုမြင်နိုင်သည်။ အကောင်းဆုံးစံပြအစီအစဉ်တစ်ခုမပါသင့်ပါ။ သို့သော်သတိပေးချက်များမည်မျှကြီးမားသောပရိုဂရမ်များသည်အလွန်ကြီးမားသောကြောင့်ခြေရာခံရန်ခဲယဉ်းသောကြောင့်ဖြစ်သည်။ တစ်ချိန်တည်းမှာများစွာသောသတိပေးချက်များရှိပါတယ်သည့်အခါအန္တရာယ်ရှိတဲ့လုပ်ဆောင်ချက်များကို။ ဆက်လုပ်မယ်ဆိုရင်

အစီအစဉ်ကို Debugging

ကိုယ်ပိုင် ခရစ္စတိုဖာ Diaz Riveros

ယခုဤအပိုင်းသည်အနည်းငယ်ရှုပ်ထွေးသွားနိုင်သည်။ ကျွန်ုပ်သည်အလုံအလောက်ရေးသားပြီးဖြစ်သောကြောင့်ကျွန်ုပ်သည်အရာရာကိုရှင်းပြရန်မတတ်နိုင်ပါ။ ကျွန်ုပ်သည်မြန်လွန်းသည်ဟုသင်မြင်လျှင်စိတ်မကောင်းပါ။ 🙂

ကုဒ်ဖျက်သိမ်းခြင်း

ကျွန်တော်တို့ရဲ့ပြုစုထားသောစက်ဘာသာစကားပရိုဂရမ်ကိုကြည့်ပြီးစကြရအောင်။

ကိုယ်ပိုင် ခရစ္စတိုဖာ Diaz Riveros

ဤသည်၌ငါတို့အဓိက function ကို၏ကုဒ်ဖြစ်ပါတယ် အစည်းအဝေးငါတို့ရဲ့ပရိုဆက်ဆာကနားလည်တယ်၊ ဘယ်ဘက်မှာလိုင်းကရုပ်ပိုင်းဆိုင်ရာလိပ်စာပဲ <+ n> အဖြစ်လူသိများသည် offsetအခြေခံအားဖြင့် function (အစ) ၏အစမှအကွာအဝေး (ဟုလူသိများ) ဖြစ်သည် ကုဒ်) ။ ထိုအခါကျွန်ုပ်တို့သည်အမျိုးအစား (push / mov / callq …) နှင့်တစ်ခုသို့မဟုတ်တစ်ခုထက်ပိုသောမှတ်ပုံတင်များကိုတွေ့မြင်ရမည်။ အကျဉ်းချုပ်ကျနော်တို့ကဒီကအရင်းအမြစ် / မူရင်းနှင့် ဦး တည်ရာအားဖြင့်နောက်တော်သို့လိုက်အရိပ်အယောင်ကြောင်းပြောနိုင်ပါတယ်။ <return_input> ကျွန်တော်တို့ရဲ့ဒုတိယ function ကိုရည်ညွှန်းပြီးကြည့်ရအောင်။

return_input

ကိုယ်ပိုင် ခရစ္စတိုဖာ Diaz Riveros

ဒါကနည်းနည်းပိုပြီးရှုပ်ထွေးတယ်၊ ဒါပေမယ့်မင်းကိုမင်းစစ်ဆေးကြည့်ချင်တာတွေရှိတယ်၊ tag လို့ခေါ်တဲ့ tag ရှိတယ် <gets@plt> နှင့်နောက်ဆုံး opcode ကိုခေါ် retq function ကို၏အဆုံးကိုညွှန်ပြ။ ကျနော်တို့ breakpoints စုံ၏စုံတွဲတစ်တွဲ function ကိုအတွက်တ ဦး တည်းထားလိမ့်မယ် gets နှင့်အခြား၌တည်၏ retq.

ကိုယ်ပိုင် ခရစ္စတိုဖာ Diaz Riveros

ပွေးသှား

အခု program ကိုဘယ်လိုစတင်မလဲဆိုတာကြည့်ဖို့ program ကို run နေပြီ။

ကိုယ်ပိုင် ခရစ္စတိုဖာ Diaz Riveros

ကျွန်ုပ်တို့တွေ့ရသော opcode ကိုညွှန်ပြသည့်မြှားသေးငယ်တစ်ခုပေါ်လာသည်ကိုကျွန်ုပ်တို့တွေ့နိုင်သည်၊ ကျွန်ုပ်သူတို့ကိုလမ်းကြောင်းသို့ထည့်သွင်းစေလိုသည် 0x000055555555469bဤသည်သည်ခေါ်ဆိုပြီးနောက်လိပ်စာဖြစ်သည် return_input function ကိုအတွက် main သင်လက်ခံရရှိပြီးသည်နှင့်ပရိုဂရမ်ပြန်လာသင့်သည်၊ ဤသည်သည်အရေးကြီးသည် input ကို, function ကိုသို့ရကြကုန်အံ့။ အခု function ကိုမဝင်ခင်မှတ်ဉာဏ်ကိုစစ်ဆေးတော့မယ် gets.

ကိုယ်ပိုင် ခရစ္စတိုဖာ Diaz Riveros

ငါအဓိက function ကိုမင်းအတွက် back up လုပ်ထားတာငါမြင်တဲ့အတိုင်းငါရည်ညွှန်းထားတဲ့ code ကိုမီးမောင်းထိုးပြလိုက်တယ် မင်္ဂလာပါ အပိုင်းနှစ်ပိုင်းခွဲခြားထားတယ်၊ ငါမင်းညွှန်ကြားချက်ကိုထည့်သွင်းစဉ်းစားစေချင်တယ် 0x7fffffffdbf0 ကွန်မန်ဒိုပြီးနောက်ဘယ်ဘက်မှပထမဆုံးဖြစ်သည် x/20x $rsp) ရရှိသည့်ရလဒ်များကိုစစ်ဆေးရန်ကျွန်ုပ်တို့အသုံးပြုရမည့်နေရာဖြစ်သောကြောင့်ဆက်လုပ်ပါ။

အစီအစဉ်ကိုချိုးဖောက်

ကိုယ်ပိုင် ခရစ္စတိုဖာ Diaz Riveros

သူတို့ကိုငါမီးမောင်းထိုးပြခဲ့ကြသည် 0x44444444ဘာလို့လဲဆိုတော့သူတို့ကငါတို့ရဲ့ Ds ရဲ့ကိုယ်စားပြုမှုဖြစ်လို့ငါတို့ပေါင်းထည့်လိုက်ပြီ input ကို ပရိုဂရမ်သို့သွားသည်နှင့်သင်မြင်နိုင်သည်အတိုင်းကျွန်ုပ်တို့သည်ကျွန်ုပ်တို့ဆန္ဒရှိသည့်လိပ်စာမှလိုင်းနှစ်ခုသာဖြစ်သည်၊ ပြီးခဲ့သည့်အဆင့်တွင်ကျွန်ုပ်တို့မီးမောင်းထိုးပြသည့်လိပ်စာများမတိုင်မီအထိ၎င်းကိုဖြည့်တော့မည်ဖြစ်သည်။

ပြန်လာလမ်းကြောင်းပြောင်းခြင်း

ယခုကျွန်ုပ်တို့သည်ကုဒ်၏ဤအပိုင်းကိုလုပ်ဆောင်ပြီးပြန်လာသော function ကိုဖော်ပြသည်။ ကျွန်ုပ်တို့သည်လိပ်စာကိုပြောင်းလဲလျှင်ဘာဖြစ်မည်ကိုကြည့်ကြစို့ we အစားထိုးထားသော opcode တည်နေရာသို့သွားသည်၊ ကျနော်တို့ပြန်သွားလျှင်သင်ဘာထင်သလဲ return_input? ဒါပေမယ့်ဒါအတွက် binary မှာလိုချင်တဲ့ address ကိုရေးဖို့လိုတယ်။ function ကိုသုံးမယ် printf bash မှ

ကိုယ်ပိုင် ခရစ္စတိုဖာ Diaz Riveros

ယခုကျွန်ုပ်တို့သည်သတင်းအချက်အလက်ကိုနှစ်ကြိမ်ရရှိခဲ့ပါပြီ၊ အကယ်၍ ဤအစီအစဉ်အတွက်မပြုလုပ်ခဲ့ပါ၊ သို့သော်ကျွန်ုပ်တို့သည်ကုဒ်ကိုချိုး ဖျက်၍ ၎င်းမလုပ်သင့်သည့်အရာတစ်ခုခုကိုထပ်ခါထပ်ခါပြုလုပ်နိုင်ပါပြီ။

ရောင်ပြန်ဟပ်

ဤရိုးရှင်းသောပြောင်းလဲမှုကိုစဉ်းစားနိုင်သည် exploit အလွန်အခြေခံကျသည်။ 🙂သူသည်အစီအစဉ်ကိုဖျက်သိမ်းပြီးသူလုပ်ချင်သောအရာတစ်ခုခုပြုလုပ်ခဲ့သည်။

၎င်းသည်အဆုံးမဲ့နီးပါးနီးပါးစာရင်းပြုလုပ်ရန်ပထမ ဦး ဆုံးခြေလှမ်းဖြစ်သည်။ အမိန့်ကိုထပ်ခါတလဲလဲလုပ်ခြင်းထက်ပိုမိုသောအရာများကိုထည့်ရန်နည်းလမ်းများရှိသည်၊ သို့သော်ဤတစ်ကြိမ်တွင်ကျွန်ုပ်သည်စာရေးခြင်းနှင့်သက်ဆိုင်သောအရာအားလုံးကိုရေးသားခဲ့သည် မင်္ဂလာပါ ဆောင်းပါးတွေထက်ပိုပြီးရေးရမယ့်အကြောင်းအရာ၊ ကျွန်ုပ်ကြိုက်နှစ်သက်သောခေါင်းစဉ်များနှင့်အနည်းငယ် ထပ်မံ၍ မရှင်းပြနိုင်ပါကစိတ်မကောင်းပါ။ surely အကယ်စင်စစ်ထိုအခွင့်အရေးကိုရလိမ့်မည်။ 🙂နှုတ်ခွန်းဆက်စကားနှင့်ဤတွင်ရောက်ရှိလာခြင်းအတွက်ကျေးဇူးတင်ပါသည်။


ဆောင်းပါး၏ပါ ၀ င်မှုသည်ကျွန်ုပ်တို့၏အခြေခံမူများကိုလိုက်နာသည် အယ်ဒီတာအဖွဲ့ကျင့်ဝတ်။ အမှားတစ်ခုကိုသတင်းပို့ရန်ကလစ်နှိပ်ပါ ဒီမှာ.

14 မှတ်ချက်များ, သင့်စွန့်ခွာ

သင်၏ထင်မြင်ချက်ကိုချန်ထားပါ

သင့်အီးမေးလ်လိပ်စာပုံနှိပ်ထုတ်ဝေမည်မဟုတ်ပါ။

*

*

  1. အချက်အလက်အတွက်တာဝန်ရှိသည် - Miguel ÁngelGatón
  2. အချက်အလက်များ၏ရည်ရွယ်ချက်: ထိန်းချုပ်ခြင်း SPAM, မှတ်ချက်စီမံခန့်ခွဲမှု။
  3. တရားဝင်: သင်၏ခွင့်ပြုချက်
  4. အချက်အလက်များ၏ဆက်သွယ်မှု - ဒေတာများကိုဥပဒေအရတာ ၀ န်ယူမှုမှ လွဲ၍ တတိယပါတီများသို့ဆက်သွယ်မည်မဟုတ်ပါ။
  5. ဒေတာသိမ်းဆည်းခြင်း: Occentus ကွန်ယက်များ (အီးယူ) မှလက်ခံသည့်ဒေတာဘေ့စ
  6. အခွင့်အရေး - မည်သည့်အချိန်တွင်မဆိုသင်၏အချက်အလက်များကိုကန့်သတ်၊

  1.   2p2 ဟုသူကပြောသည်

    ပိုပြီးတိုက်ရိုက် Be လျော့နည်းရေးနှင့်အရေးပါသောအရာကိုအာရုံစိုက်ပါ

    1.    ChrisADR ဟုသူကပြောသည်

      မင်္ဂလာပါမှတ်ချက်အတွက်ကျေးဇူးတင်ပါတယ်

      အမှန်အတိုင်းပြောရရင်ကျွန်တော်ဟာအကြံဥာဏ်ကောင်းတွေအများကြီးကိုဖြတ်ခဲ့ပေမယ့်ပရိုဂရမ်းမင်းဗဟုသုတမရှိတဲ့သူတစ်ယောက်စိတ်ကူးတစ်ခုရဖို့ငါအနည်းဆုံးကျန်ခဲ့တယ်လို့ထင်ခဲ့တယ်။

      ပတ်သတ်ပြီး

      1.    အမည်မထုတ်ဖေါ်သော ဟုသူကပြောသည်

        ပြနာကပရိုဂရမ်းမင်းဗဟုသုတမရှိသောသူများသည်၎င်းနှင့်စတင်ရန်အလွန်ရှုပ်ထွေးလွန်းသောကြောင့်ဘာမှမသိနိုင်သော်လည်းပရိုဂရမ်ကိုတတ်ကျွမ်းသူများသည် ပို၍ တိုက်ရိုက်ဖြစ်ခြင်းကိုတန်ဖိုးထားကြသည်။

        မင်းကလူတိုင်းကိုမရောက်နိုင်ဘူး၊ မင်းကိုရွေးရမယ်၊ ဒီကိစ္စမှာမင်းဖုံးအုပ်ထားချင်တဲ့အပြစ်တွေကျူးလွန်ပြီးပြီ။

        စကားမစပ်ငါအပြုသဘောဆောင်တဲ့ဝေဖန်မှုတစ်ခုအနေနဲ့ပြောတယ်၊ ဒီခေါင်းစဉ်တွေကိုငါနှစ်သက်တယ်၊ မင်းဆောင်းပါးတွေ၊ ဂုဏ်ပြုလွှာတွေရေးစေချင်တယ်။

    2.    အမည်မထုတ်ဖေါ်သော ဟုသူကပြောသည်

      ငါအတူတူခံစားကြရသည်။

      1.    ChrisADR ဟုသူကပြောသည်

        နှစ် ဦး စလုံးရန်အလွန်ကျေးဇူးတင်ပါတယ် !! အမှန်တရားကတော့ဒီဆောင်းပါးတွေကိုဖတ်ရှုတဲ့အဆင့်မြင့်ပရိုဂရမ်းမင်းရှိတဲ့လူ ဦး ရေကနည်းနေတယ်ဆိုရင် (အနည်းဆုံးမှတ်ချက်တွေပေါ်မူတည်ပြီးကောက်ချက်ချနိုင်ပါတယ်။ ) အမှန်တရားဖြစ်ရင်ပစ်မှတ်ထားတဲ့ပရိသတ်ဆီဘယ်လိုရောက်ရမယ်ဆိုတာနားလည်ဖို့ခက်ခဲပါတယ်။

        ငါနားလည်သဘောပေါက်ရန်ကျယ်ပြန့်အသိပညာအခြေစိုက်စခန်းလိုအပ်သောအရာတစ်ခုခုကိုရိုးရှင်းချင်သောအနေဖြင့်ပြစ်မှားပါပြီ ငါဘလော့ဂ်စတင်ခြင်းစကတည်းကငါစာဖတ်သူများသိသည့်နေရာနှင့်ငါပြောနေသည့်အရာကိုနားမလည်သောနေရာအတိအကျကိုကျွန်ုပ်မသိသေးကြောင်းသင်နားလည်မည်ဟုမျှော်လင့်ပါသည်။ ၎င်းသည်အမှန်တရားကိုပြောရန်ပိုမိုလွယ်ကူစေသည်

        ငါ format ကို depersonalizing မပါဘဲထိုက်တန်သောအခါငါတိုတောင်းဖို့ကြိုးစားပါလိမ့်မယ်, အကြောင်းအရာနှင့်ရေးသားခြင်း၏လမ်းခွဲထုတ်တ ဦး တည်းစိတ်ကူးလိမ့်မယ်ထက်နည်းနည်းပိုရှုပ်ထွေးသည်ကတည်းကငါကအနည်းဆုံးသူတို့ကိုအတော်လေးဆက်စပ်ရှိသည်, ဒါပေမယ့်ငါနောက်ဆုံးမှာငါနိုင်လိမ့်မည်ဟုထင် အကြောင်းအရာဖြတ်တောက်မည့်အစားလိုင်းများထည့်ရန်။

        ပတ်သတ်ပြီး

  2.   မာရီယို ဟုသူကပြောသည်

    ဘာသာရပ်အကြောင်းဘယ်မှာပိုသိနိုင်မလဲ။ အကြံပြုထားတဲ့စာအုပ်ရှိသလား။

    1.    ChrisADR ဟုသူကပြောသည်

      John Heasman၊ Felix Linder နှင့် Gerardo Richarte တို့၏ The Shellcoder ၏လက်စွဲစာအုပ်မှရရှိသောဥပမာကိုကျွန်ုပ် ၆၄-bit ဘာသာပြန်ခြင်းအတွက်ကျွန်ုပ်၏ဗိသုကာ၊ Intel developer လက်စွဲ၊ အတွဲ ၂ နှင့် ၃ ကိုလေ့လာခဲ့ရသည်။ ကြောင်းများအတွက်တော်တော်လေးယုံကြည်စိတ်ချရသောအရင်းအမြစ်။ 'info gdb' command ဖြင့်ပါ ၀ င်သည့် GDB စာရွက်စာတမ်းများကိုဖတ်ခြင်းသည်ကောင်း၏၊ Assembly and C ကိုလေ့လာရန်အလွန်ကောင်းသောစာအုပ်များစွာရှိသည်။ Assembly စာအုပ်များသည်ဟောင်းနွမ်းနေပြီဖြစ်သောကြောင့်အခြားဖြည့်စွက်ရန်ကွက်လပ်ရှိသည်။ စာရွက်စာတမ်းများရိုက်ထည့်ပါ။

      shellcode ကိုယ်နှိုက်သည်အကြောင်းအမျိုးမျိုးကြောင့်ဒီနေ့ထိထိရောက်မှုမရှိတော့သော်လည်းနည်းစနစ်အသစ်များသင်ယူရန်စိတ်ဝင်စားစရာဖြစ်နေဆဲဖြစ်သည်။

      ဒါကနည်းနည်းကူညီပေးမယ်လို့မျှော်လင့်ပါတယ်🙂နှုတ်ခွန်းဆက်ပါတယ်

  3.   ဖရန့် ဟုသူကပြောသည်

    ကောင်းသောဆောင်းပါး၊ ဘလော့ဂ်ဟောင်း desdelinux ပြန်ပေါ်လာပြီ =)
    ဝေးလံခေါင်သီသော shell သည်ထိရောက်မှုမရှိဟုသင်ပြောသောအခါတိုက်ခိုက်မှုကိုလျှော့ချရန်ရည်ရွယ်သောတန်ပြန်အစီအမံများကိုဆိုလိုသည်၊ ၎င်းကို၎င်းတို့အားထိုးစစ်လုံခြုံရေးဟုခေါ်သည်။
    နှုတ်ခွန်းဆက်ပါတယ်

    1.    ChrisADR ဟုသူကပြောသည်

      ဖရန့်🙂အတွက်အလွန်ကျေးဇူးတင်ပါတယ်။ တကယ်တော့ဒီနေ့ Shellcoding ကဒီမှာငါတို့မြင်ရတာထက်ပိုပြီးရှုပ်ထွေးတယ်ဆိုတာကိုငါဆိုလိုတာပါ။ ကျွန်ုပ်တို့တွင် ASLR (ကျပန်းမှတ်ဉာဏ်တည်နေရာမီးစက်) stack protector တစ်ခုရှိသည်၊ program တစ်ခုအတွင်းသို့ထိုးသွင်းနိုင်သည့် opcodes အရေအတွက်ကိုကန့်သတ်သောအမျိုးမျိုးသောအတိုင်းအတာများနှင့်တန်ပြန်မှုများရှိသည်။ ၎င်းသည်အစမျှသာဖြစ်သည်။

      လေးစားစွာဖြင့်,

  4.   free software ဟုသူကပြောသည်

    မင်္ဂလာပါ၊ ခေါင်းစဉ်ကိုချဲ့ထွင်ရန်အခြားအပိုင်းတစ်ခုကိုသင်လုပ်ဆောင်မည်လား။ စိတ်ဝင်စားဖို့ကောင်းတယ်

    1.    ChrisADR ဟုသူကပြောသည်

      မင်္ဂလာပါ၊ ခေါင်းစဉ်သည်အမှန်ပင်အတော်လေးစိတ်ဝင်စားဖွယ်ကောင်းသော်လည်း၊ ကျွန်ုပ်တို့ရှုပ်ထွေးသည့်အဆင့်သည်အလွန်မြင့်မားလာလိမ့်မည်၊ ဖြစ်နိုင်သည်မှာအခြားအကြောင်းအရာများကိုနားလည်ရန်လိုအပ်ချက်အမျိုးမျိုးကိုရှင်းပြရန်ပို့စ်အမြောက်အမြားပါဝင်ခြင်းဖြစ်နိုင်သည်။ ငါအကြောင်းရေးသားလိမ့်မယ်, ဒါပေမယ့်သူကအောက်ပါပို့စ်များကိုဖြစ်လိမ့်မည်မဟုတ်ပေ, ငါသည်ဤတ ဦး တည်းနှင့်အတူဆက်လက်မတိုင်မီခေါင်းစဉ်အနည်းငယ်ရေးသားချင်တယ်။

      မင်္ဂလာပါ။ မျှဝေမှုအတွက်ကျေးဇူးတင်ပါတယ်

  5.   ရှားစောင်းပင် ဟုသူကပြောသည်

    အရမ်းကောင်းတယ် che! သငျသညျအကြီးအပို့စ်များကိုပံ့ပိုးကြသည်! မေးခွန်းတစ်ခုမှာ“ IT Security Security” ကို“ အာမခံခြင်းဖြင့်ဘောပင်စမ်းသပ်ခြင်း” စာအုပ်ကိုဖတ်ခြင်းဖြင့်စတင်သည်။ ဒီစာအုပ်ကိုအကြံပြုထားပါသလား။ ဤပြissuesနာများကိုကျွန်ုပ်စတင်မေးမြန်းခြင်းကိုသင်ဘယ်လိုအကြံပြုသနည်း။

    1.    ChrisADR ဟုသူကပြောသည်

      Hello cactus၊ အားနည်းချက်တွေကိုစကြာ ၀ isာတစ်ခုလုံးကအခြားသူများအားဖြင့်သင်၏အာရုံစူးစိုက်မှုကိုအဘယ်အရာပေါ်မူတည်သည်၊ သင်၏လိုအပ်ချက်များနှင့် IT မန်နေဂျာသည် pen-tester ကဲ့သို့တူညီသောသိရန်မလိုအပ်ပါ။ သို့မဟုတ်အားနည်းချက်ရှိသည့်စုံစမ်းစစ်ဆေးသူသို့မဟုတ် forensic လေ့လာသုံးသပ်သူတစ် ဦး၊ ဘေးအန္တရာယ်ပြန်လည်ထူထောင်ရေးအဖွဲ့သည်အလွန်ကွဲပြားသောကျွမ်းကျင်မှုများရှိသည်။ တစ်ခုချင်းစီတွင်နည်းပညာဆိုင်ရာဗဟုသုတတစ်ခုစီလိုအပ်သည်မှာသေချာသည်။ သင်ကြိုက်နှစ်သက်သောအရာများကိုစတင်ရှာဖွေရန်နှင့်စာအုပ်များ၊ ဆောင်းပါးများနှင့်အခြားသူများကိုစတင်ဖျက်ဆီးပစ်ရန်နှင့်အရေးအကြီးဆုံးမှာသင်ဖတ်ရှုသမျှကိုခေတ်နောက်ကျနေစေကာမူလက်တွေ့လေ့ကျင့်ရန်ကျွန်ုပ်အကြံပြုပါသည်။ ဒါကအဆုံးကိုပြောင်းလဲစေလိမ့်မယ်။
      လေးစားစွာဖြင့်,

  6.   Eizen ဟုသူကပြောသည်

    မင်္ဂလာပါ။
    ဒီခေါင်းစဉ်ကိုရှင်းပြတဲ့အပြင်၊ Shellcoder's Handbook ဆိုတဲ့အပိုအချက်အလက်အတွက်မှတ်ချက်ပေးတဲ့အတွက်ကျေးဇူးတင်ပါတယ်။ ငါဆိုင်းငံ့စာဖတ်ခြင်းရှိသည်😉