Eegista ka faa'iideysiga nuglaanta

Sidii aan u rajaynayay inaan sii wado ka hadalka mawduucan, aan kuu sheego waxoogaa taariikhi ah, aragti iyo ku-dhaqmid ku saabsan dayacanka. Dhamaanteen waan wada maqalnay hada in khaladaadka amniga ay wax badan ku kici karaan, waxaan wada ognahay inaan u baahanahay inaan sii wadno barnaamijkeena softiweerka, waxaan wada ognahay in cusbooneysiin badan ay keeneen cilladaha amniga. Laakiin maanta wax yar ayaan idiinka sheegayaa wax ku saabsan sida khaladaadkaan loo helo loona adeegsado 🙂 Laakiin tan ka hor waxaan cadeyn doonnaa faahfaahin kooban si aan u helno aragti guud oo ka wanaagsan.

Kahor intaadan bilaabin

Marka hore waxaan rabaa inaan kuu sheego inaan diirada saari doono nuglaanta ugu horeysa ee aan bartay ka faa'iideysiga, ee la yaqaan Kaydka Buffer, u nuglaantaan waxaan uga faa'iideysaneynaa xaqiijin la'aanta xusuusta si aan u sameyno waxyaabo xiiso leh 🙂 Laakiin aan wax yar ka sii caddeynno.

Tani ma noqonayso xaalad dhab ah oo adduunka ka jirta

Ma awoodo inaan baro iyaga inay jebiyaan barnaamij kasta oo ay arkaan 🙂 marka hore maxaa yeelay waxay khatar ku tahay kombuyuutarradooda, tan labaad maxaa yeelay taasi waxay qaadan doontaa wax ka badan qoondadayda caadiga ah ee ereyada.

Waxaan aadeynaa safar 80-meeyadii

Waxa aan ku tusi doono waxaan ku sameyn karaa laptop-ka, laakiin macnaheedu maahan in maanta lagu samayn karo qaab fudud 🙂 inbadan oo ka mid ah fikradahan ayaa horey looga faa'iideystay marar badan in hababka ilaalinta cusub iyo habab cusub oo looga baxsado Iyaga ayaa soo ifbaxay that laakiin taasi waxay nagu celineysaa isla meeshii, ma jirto meel loo sheego intaas oo dhan 🙂

Waxaa laga yaabaa inaysan ku shaqeyn karin processor-kaaga

In kasta oo aan adeegsanayo tusaale aad u fudud, haddana waxaan rabaa inay si cad u caddaato bilowga in faahfaahinta tan ay aad u badan tahay oo ay kala duwan tahay sida ay u soo bixi karto isla aniga oo kale, haddii aad rabto inaad isku daydo , Saamaynta la rabo sidoo kale lama gaari karo 🙂 Laakiin waad qiyaasi kartaa inaanan ku sharixi karin taas meeshan, gaar ahaan maadaama hordhaca aan horey u qaatay in ka badan 300 oo erey, marka waxaan toos ugu abaareynaa ujeedkeena.

Waa maxay Buffer overflow

Si tan looga jawaabo waa inaan marka hore fahanno qeybtii hore ee isku dhafkan.

Buffers

Maaddaama wax walba ay ku saabsan yihiin xusuusta kumbuyuutarka, waa macquul in ay jiraan nooc ka mid ah weelka macluumaadka. Markaan ka hadlayno gelinta wax soo saarka, waxaan toos ugu nimid fikradda ah duubka. Si loo soo koobo, a buffer Waa meel xusuus ah oo cabbirkeedu qeexan yahay oo aan ku keydin doonno tiro macluumaad ah, fudud 🙂

Daadad xad dhaaf ah ayaa dhaca, sida magaca ka muuqata, marka keydku buuxiyo macluumaad ka badan inta uu xamili karo. Laakiin maxay tani muhiim u tahay?

dhoobo

Sidoo kale loo yaqaan xirmooyinka, waa nooc xog ah oo aan la koobi karin oo aan ku awoodno raso macluumaadka, astaamaha ugu muhiimsan ee ay leeyihiin ayaa ah inay leeyihiin amar LIFO (Ugu Dambeyntii Markii Hore). Aynu ka fikirno ilbiriqsi ku saabsan xidhmooyin taarikooyin ah, waxaan dul saaraynaa mid mid korkiisa, ka dibna mid mid ayaan uga soo saaraynaa dusha sare, tani waxay ka dhigaysaa saxanka ugu dambeeya ee aan dhignay (midka ugu sarreeya ) waa saxanka ugu horeeya ee aan soo saarayno, sida iska cad haddii aan kaliya soo saari karno hal saxan markiiba oo aan go'aansano inaan u sameyno sida ay u kala horeeyaan:

Hadda oo aad ogtahay labadan fikradood, waa inaan kala soocnaa. Xirmooyinka waa muhiim maxaa yeelay barnaamij kasta oo aan wadno wuxuu leeyahay mid u gaar ah xargaha fulinta. Laakiin xidhmooyinkan ayaa leh dabeecad gaar ahhoos u koraa. Waxa kaliya ee aad u baahan tahay inaad ka ogaato arrintan ayaa ah inta barnaamijku socdo, marka hawl la yiraahdo, xirmooyinku waxay ka socdaan lambarka X ee xusuusta illaa lambar (Xn). Laakiin si aan u sii wadno waa inaan fahamno hal fikrad kale.

Tilmaamayaasha

Tani waa fikrad kaxeysa barnaamijyo badan oo waalan markay bilaabaan adduunka C, runtiina awooda weyn ee barnaamijka C qeyb ahaan waxaa sabab u ah adeegsiga tilmaamayaasha. Si loo fududeeyo, tilmaame wuxuu tilmaamayaa cinwaanka xusuusta. Tani waxay u egtahay mid adag, laakiin maahan wax aad u adag, dhamaanteen waxaan ku leenahay RAM mashiinadeena sax? Hagaag, tan waxaa lagu qeexi karaa a nidaaminta isku xigxiga ee blocks, Goobahan waxaa badanaa lagu muujiyaa tirooyinka hexadecimal (laga bilaabo 0 ilaa 9 ka dibna laga bilaabo A ilaa F, sida 0x0, 0x1, 0x6, 0xA, 0xF, 0x10). Halkan waa ogeysiis xiiso leh, 0x10 MAYA waxay u dhigantaa 10 😛 haddii aan u rogno amarka jajab tobanle waxay la mid noqonaysaa iyadoo la yiraahdo 15. Tani waa wax sidoo kale jahwareer badan in ka badan mid markii hore, laakiin aan hoos ugu degno.

Diiwaannada

Processor-ku waxay la shaqeeyaan tiro ka mid ah diiwaanada, oo ka shaqeeya gudbinta meelaha laga bilaabo xusuusta jirka ilaa processor-ka, naqshadaha adeegsada 64-bits, tirada diiwaangelintu way badan tahay wayna adag tahay in halkaan lagu sharaxo, laakiin si loo helo fikradda, diiwangelintu waa sida tilmaamayaasha, waxay ku muujinayaan waxyaabo kale , booska xusuusta (goobta).

Hada ku dhaqan

Waan ogahay inay ahayd macluumaad badan in laga shaqeeyo ilaa hada, laakiin dhab ahaantii waa arrimo xoogaa adag oo aan isku dayo inaan ku sharaxo qaab aad u fudud, waxaan arki doonnaa barnaamij yar oo adeegsanaya keydadka waana u soconaa u kala bax si aad u fahanto tan ku saabsan daadadka, sida iska cad midkani maahan Waa barnaamij dhab ah, waxaanna "ka dhuumandoonnaa" tallaabooyin badan oo looga hortegayo oo maanta la adeegsanayo, si loo muujiyo sida wax loo qabtay ka hor 🙂 mabaadi'da ayaa lagama maarmaan u ah inay awoodaan inay bartaan waxyaabo aad u adag 😉

GDB

Barnaamij aad u wanaagsan oo aan shaki ku jirin inuu yahay midka ugu badan ee ay adeegsadaan barnaamijiyeyaasha C. Waxaa ka mid ah wanaagyadiisa faraha badan ee aan haysanno xaqiiqda ah inay noo oggolaaneyso inaan aragno waxaas oo dhan ee aan illaa hadda ka soo hadalnay, diiwaangelinno, xarriiqyo, kaydadyo, iwm. Aan aragno barnaamijka aan u adeegsan doono tusaalaheena.

dib u soo celin.c

Leh Christopher Diaz Riveros

Kani waa barnaamij fudud oo fudud, waxaan isticmaali doonnaa maktabadda stdio.h inaad awood u yeelato inaad hesho macluumaad kuna soo bandhigto boosteejada. Waxaan arki karnaa hawl la yiraahdo return_input kaas oo dhaliya a buffer loo yaqaan array, oo dhererkeedu yahay 30 bayt (nooca xogta char waa 1 bateer dheer).

Shaqada gets(array); codso macluumaad qunsulka iyo shaqada printf() soo celiyaa waxa ku jira qormada oo ku soo bandhigaa shaashadda.

Barnaamij kasta oo lagu qoro C wuxuu ku bilaabmaa shaqada main(), tani waxay mas'uul ka noqon doontaa oo keliya soo wicitaanka 'back_input', hadda waxaan diyaarinaynaa barnaamijka.

Leh Christopher Diaz Riveros

Aynu wax yar ka qaadanno wixii aan sameeyay. Ikhtiyaarka -ggdb waxay u sheegtaa gcc inay barnaamijka ku soo ururiso macluumaadka gdb si ay si sax ah wax ugu khaldo. -fno-stack-protector Waa ikhtiyaar ay iska cadahay inaynaan isticmaaleynin, laakiin waa inaan adeegsaneyno maxaa yeelay haddii kale waxay noqon laheyd suurtagal in la soo saaro qulqulka buuraha ee xargaha Dhamaadka waxaan tijaabiyey natiijada. ./a.out waxay kaliya socotaa wixii aan hada soo ururiyey, waxay waydiisataa macluumaad wayna soo celisaa. Socda ning

Digniin

Qoraal kale halkan. Digniinta ma arki kartaa? si cad waa wax la tixgeliyo marka aan ku shaqeyno koodh ama aan soo ururinayno, tani waa wax yar oo muuqda oo waxaa jira barnaamijyo yar oo maanta leh shaqadooda gets() Koodhka. Faa'iidada ay leedahay 'Gentoo' waxaa weeye iyadoo la isu geeyo barnaamij kasta, waxaan arki karaa waxa khaldan, barnaamijka "ku habboon" maahan inay lahaadaan, laakiin waxaad layaabi doontaa inta barnaamijyo waaweyn ee digniintaas leh maxaa yeelay way aad u weyn yihiin waana Hawlaha halista ah marka ay jiraan digniino badan isla waqti isku mid ah. Hadda haddii aan sii wadno

Khaladka barnaamijka

Leh Christopher Diaz Riveros

Hadda qaybtani way yara wareeri kartaa, laakiin maadaama aan hore u qoray wax ku filan, ma awoodo inaan sharraxo wax walba, ee raalli ahow haddii aad aragto inaan xawaare ku socdo

Hub ka dhigista

Aynu ku bilowno adoo eegaya barnaamijkeena luqadda mashiinka la ururiyey.

Leh Christopher Diaz Riveros

Kani waa lambarka shaqadeena ugu weyn ee Golaha, tani waa waxa processor-keena fahmay, khadka bidix waa cinwaanka jirka ee xusuusta, <+ n> waxaa loo yaqaan offset, asal ahaan fogaanta laga soo bilaabo bilowga shaqada (ugu weyn) ilaa bayaankaas (oo loo yaqaan nambarka). Kadibna waxaan aragnaa nooca waxbaridda (riix / mov / callq…) iyo mid ama in kabadan diiwaan gelinno. Marka la soo koobay waxaan dhihi karnaa waa tilmaam ay raacdo isha / asalka iyo halka loo socdo. <return_input> waxaa loola jeedaa shaqadeena labaad, bal aan fiirino.

Ku noqo_ gelitaan

Leh Christopher Diaz Riveros

Tani way yara adagtahay, laakiin waxaan kaliya doonayaa inaad hubiso dhowr waxyaalood, waxaa jira calaamado la yiraahdo <gets@plt> iyo midkii ugu dambeeyay ee loo yaqaan 'opcode' retq oo tilmaamaya dhamaadka shaqada. Waxaan soo gelin doonaa dhowr dhibcood, mid ka mid ah shaqada gets iyo mid kale oo ku jira retq.

Leh Christopher Diaz Riveros

Run

Hadda waxaan u socon doonnaa barnaamijka si aan u aragno sida ficilku u bilaabmayo.

Leh Christopher Diaz Riveros

Waan arki karnaa in fallaar yar ay u muuqato tilmaamaysa opcode meesha aan joogno, waxaan rabaa inay tixgeliyaan jihada 0x000055555555469b, kani waa cinwaanka wicitaanka kadib return_input shaqeynaya main , tani waa muhiim maadaama ay tahay halka barnaamijku ku soo laabanayo markaad dhamaysato helitaanka aqbasho, aan u galno hawsha. Hadda waxaan hubin doonnaa xusuusta ka hor intaanan shaqada gelin gets.

Leh Christopher Diaz Riveros

Dib ayaan kuugu soo celiyey shaqadii ugu weyneyd, waxaanan iftiimiyay koodhkii aan tilmaamayey, sida aad arki karto, waxaana ugu wacan caddaysnaan ayaa loo kala qaaday laba qaybood, waxaan rabaa inay tixgeliyaan jihada 0x7fffffffdbf0 (midka hore bidix ka dib taliska) x/20x $rsp) maadaama tani ay tahay meesha ay tahay inaan u isticmaalno inaan ku hubino natiijooyinka helitaanka, aan sii wadno:

Jebinta barnaamijka

Leh Christopher Diaz Riveros

Kuwaas ayaan iftiimiyay 0x44444444maxaa yeelay iyagu waa matalaadda Dskeenna 🙂 hadda waxaan bilownay inaan ku darno aqbasho ilaa barnaamijka, oo sidaad u aragto, waxaan kaliya ka nahay laba sadar cinwaanka aan rabno, waan buuxinaynaa ilaa aan kahorreyno cinwaanada aan ku tilmaannay talaabadii hore.

Bedelida wadada soo noqoshada

Hadda oo aan ku guuleysannay inaan galno qaybtaan koodhka halkaasoo ay ku tusineyso soo noqoshada shaqada, aan aragno waxa dhacaya haddii aan cinwaanka ka beddelno 🙂 halkii aan ka aadi lahayn meesha opcode-ka la socota kan aan daqiiqad ka hor haysannay, maxaad u maleyneysaa hadaan dib ugu noqono return_input? Laakiin tan, waa lagama maarmaan in la qoro cinwaanka aan dooneyno laba-geesood, waxaan ku sameyn doonnaa shaqada printf ka yimid bash 🙂

Leh Christopher Diaz Riveros

Hadda waxaan helnay macluumaadka laba jeer 😀 hubaal barnaamijka looma sameynin taas, laakiin waxaan ku guuleysannay inaan jabino koodhka oo aan ku celinno wax aysan ahayn inay qabato.

Milicsiga

Isbeddelkan fudud waxaa loo qaadan karaa a loogana faa'iidaysto aasaasi 🙂 wuxuu ku guuleystey inuu jabiyo barnaamijka oo uu sameeyo wax aan rabno inuu sameeyo.

Kani waa talaabada ugu horeysa ee liistada waxyaabaha aan la koobi karayn ee ah in la arko lana daro, waxaa jira siyaabo lagu daro waxyaabo badan oo aan ka aheyn ku celcelinta amar, laakiin markan wax badan ayaan qoray iyo wax walba oo la xiriira qolofta waa mowduuc la qoro in ka badan maqaalo, buugaag dhameystiran waxaan dhihi lahaa. Waan ka xumahay haddii aanan awoodin inaan wax yar ka sii fiirsado mowduucyada aan jeclaan lahaa, laakiin hubaal waxaa jiri doona fursad 🙂 Salaan iyo mahadnaq inaad halkan timaaddo.


Ka tag faalladaada

cinwaanka email aan la daabacin doonaa. Beeraha loo baahan yahay waxaa lagu calaamadeeyay la *

*

*

  1. Masuul ka ah xogta: Miguel Ángel Gatón
  2. Ujeedada xogta: Xakamaynta SPAM, maaraynta faallooyinka.
  3. Sharci: Oggolaanshahaaga
  4. Isgaarsiinta xogta: Xogta looma gudbin doono dhinacyada saddexaad marka laga reebo waajibaadka sharciga ah.
  5. Kaydinta xogta: Macluumaadka ay martigelisay Shabakadaha Occentus (EU)
  6. Xuquuqda: Waqti kasta oo aad xadidi karto, soo ceshan karto oo tirtiri karto macluumaadkaaga.

  1.   2p2 dijo

    Noqo mid toos ah. Qor wax yar oo diiradda saar waxa muhiimka ah

    1.    ChrisADR dijo

      Mahadsanid, waad ku mahadsan tahay faallooyinka.

      Si aan runta u sheego waxaan jaray qayb wanaagsan oo fikradaha ka mid ah, laakiin sidaas oo ay tahay aniga waxay ila ahayd inay ka tagtay waxa ugu yar si qof aan aqoon u lahayn barnaamijyada uu fikrad u helo.

      Salaan

      1.    si qarsoodi ah dijo

        Dhibaatadu waxay tahay kuwa aan aqoon u lahayn barnaamijyada waxba kama ogaan doonaan maxaa yeelay aad ayey u adag tahay in lagu bilaabo, laakiin kuwa yaqaan sida wax loo barto waxay qaddarinayaan inay toos u toosan yihiin.

        Waxaan u maleynayaa inaadan gaari karin qof walba, waa inaad doorataa, kiiskanna waad ku dembaabtay inaad rabto inaad waxbadan daboosho.

        By the way, waxaan kuu sheegayaa dhaleeceyn wax dhis ah, waan jeclahay mowduucyada waxaanan jeclaan lahaa inaad sii wado qorista maqaalada, hambalyo!

    2.    si qarsoodi ah dijo

      Waxaan u maleynayaa in wax la mid ah.

      1.    ChrisADR dijo

        Aad baad u mahadsan tihiin labadaba !! Xaqiiqdii way adagtahay in la fahmo sida loo gaaro bartilmaameedka dhagaystayaasha marka runta ay tahay in tirada dadka leh barnaamij heer sare ah ee akhriya qodobadan ay hooseeyaan (ugu yaraan taasi waa lagu kala saari karaa iyadoo lagu saleynayo faallooyinka)

        Runtii waan ku gafay anigoo raba inaan fududeeyo wax u baahan saldhig aqooneed ballaadhan in la fahmo. Waxaan rajeynayaa inaad fahantay tan iyo markii aan bilaabayo qorista, wali ma aanan ogaan barta saxda ah ee akhristayaashaydu ku ogaadaan kuna fahmaan waxa aan dhahayo. Taasi waxay sahlaysaa wax badan in runta la sheego 🙂

        Waxaan isku dayi doonaa inaan ka gaabiyo markii ay u qalanto aniga oo aan iska dhigin qaabka, maaddaama kala-goynta habka wax loo qoro ay ka kooban tahay waxoogaa ka dhib badan sida loo malayn karo, ugu yaraan waxaan leeyahay iyaga oo aad isugu xidhan, laakiin waxaan u malaynayaa in ugu dambayntii aan awood u yeelan doono in lagu daro khadadka halkii laga jaraya waxyaabaha.

        Salaan

  2.   Mario dijo

    Xagee laga heli karaa wax badan oo ku saabsan mowduuca? Buug kasta oo lagula taliyay?

    1.    ChrisADR dijo

      Tusaalaha waxaa laga soo qaatay Buug-gacmeedka Shellcoder ee Chris Anley, John Heasman, Felix Linder iyo Gerardo Richarte, laakiin si loo sameeyo tarjumaadda 64-bitka ah waxay ahayd inaan barto qaab dhismeedkayga, buugga 'intel buug', buugga 2 iyo 3 waa a ilo quruxsan oo lagu kalsoonaan karo taas. Sidoo kale way wanaagsan tahay in la akhriyo dukumintiyada GDB, oo ku yimaada amarka 'info gdb', Si aad u barato Golaha iyo C waxaa jira buugaag aad u wanaagsan oo aad u wanaagsan, marka laga reebo in buugaagta Golaha ay xoogaa da 'yihiin markaa waxaa jira farqi u buuxiya mid kale nooca dukumeentiyada.

      Soodhawrka laftiisa laftiisu waxtar uma leh maalmahan sababo kala duwan awgood, laakiin weli waa mid xiiso leh in la barto farsamooyin cusub.

      Waxaan rajeynayaa inay wax yar caawinayso 🙂 Salaan

  3.   Franz dijo

    Buen artículo, el viejo blog desdelinux ha vuelto a renacer =)
    Markaad dhahdo qolofka fog waxtarka malaha, waxaad ula jeedaa tallaabooyin looga hortagayo oo loogu talagalay in lagu yareeyo weerarrada, waxay ugu yeeraan nabadgelyo weerar ah.
    Salaan kadib sii wad

    1.    ChrisADR dijo

      Aad baad u mahadsan tihiin Franz words ereyo aad u naxariis badan, runti waxaan ula jeeday in Shellcoding maanta ay ka dhib badan tahay waxa aan halkaan ku aragno. Waxaan leenahay ASLR (matoorka goobta xasuusta aan kala sooca lahayn) ilaaliyaha xargaha, cabbirada kala duwan iyo talaabooyinka kahortaga ee xadidaya tirada opcode ee lagu duri karo barnaamij, waana bilaw

      Thanks,

  4.   Software Free dijo

    Waad salaaman tahay, ma sameyn doontaa qayb kale oo balaadhinaysa mawduuca? Waa wax xiiso leh

    1.    ChrisADR dijo

      Waad salaaman tihiin, mawduuca runtii waa wax aad u xiiso badan, laakiin heerka kakanaanta ee aan qaadaneyno ayaa noqon doonta mid aad u sareysa, oo laga yaabo inay ku lug leedahay tiro badan oo qoraallo ah si loo sharaxo shuruudaha kala duwan ee loo baahan yahay si loo fahmo tan kale. Waxaan u badan tahay inaan wax ka qoro, laakiin ma noqon doonto qoraallada soo socda, waxaan rabaa inaan qoro dhowr mowduuc ka hor intaanan sii wadin kan.

      Salaan, iyo mahadsanid wadaagista

  5.   tiin dijo

    Aad u fiican che! Waxaad ku darsanaysaa qoraallo waawayn! Hal su'aal, waxaan ku bilaabayaa waxan Amni IT-ga ah anigoo aqrinaya buug la yiraahdo "Sugida amniga adoo qalinka ku hubinaya." Buuggan ma lagu taliyay? Sideed u soo jeedineysaa inaan bilaabo inaan wax ka weydiiyo arrimahan?

    1.    ChrisADR dijo

      Hello cactus, waa adduun dhan oo ku saabsan jilicsanaanta, iyo kuwa kale, inaad runta u sheegto waxay in badan ku xiran tahay waxa ku soo jiito dareenkaaga, iyo baahiyaha aad qabtid, maareeyaha IT-ga uma baahna inuu ogaado isla sida qalin-baare, Ama baare u nugul, ama falanqeeye dambi baaris, kooxda ka soo kabashada musiibada waxay leeyihiin xirfado aad u kala duwan. Sida iska cad mid kasta oo ka mid ah wuxuu u baahan yahay heer farsamo oo kala duwan, waxaan kugula talinayaa inaad bilowdo ogaanshaha sida saxda ah ee aad jeceshahay, oo aad bilowdo cunista buugaagta, maqaallada, iyo kuwa kale, iyo tan ugu muhiimsan, ku celceli wax kasta oo aad akhrido, xitaa haddii ay tahay taariikh dhac. isbedel ku sameynayo dhamaadka.
      Thanks,

  6.   Eizen dijo

    Hambalyo!
    Aad baad ugu mahadsan tihiin sharraxaadda mawduucan, iyo sidoo kale inaad ka faallooteen wixii macluumaad dheeri ah waxaan haynaa "Buug-gacmeedka Shellcoder". Waxaan horey uhelay aqrin aan sugayo 😉