hacktricks/reversing-and-exploiting/linux-exploiting-basic-esp/stack-overflow
2024-04-02 19:48:36 +00:00
..
ret2lib Translated ['exploiting/linux-exploiting-basic-esp/README.md', 'reversin 2024-04-02 19:48:36 +00:00
ebp2ret-ebp-chaining.md Translated ['README.md', 'backdoors/salseo.md', 'cryptography/certificat 2024-03-29 21:14:28 +00:00
pointer-redirecting.md Translated ['exploiting/linux-exploiting-basic-esp/README.md', 'reversin 2024-04-02 19:48:36 +00:00
README.md Translated ['reversing-and-exploiting/linux-exploiting-basic-esp/arbitra 2024-03-30 23:43:28 +00:00
ret2csu.md Translated ['reversing-and-exploiting/linux-exploiting-basic-esp/common- 2024-03-31 17:34:45 +00:00
ret2dlresolve.md Translated ['reversing-and-exploiting/linux-exploiting-basic-esp/common- 2024-03-31 17:34:45 +00:00
ret2esp-ret2reg.md Translated ['exploiting/linux-exploiting-basic-esp/README.md', 'reversin 2024-03-31 10:08:05 +00:00
ret2ret.md Translated ['exploiting/linux-exploiting-basic-esp/README.md', 'reversin 2024-04-02 19:48:36 +00:00
ret2shellcode.md Translated ['exploiting/linux-exploiting-basic-esp/README.md', 'reversin 2024-03-29 12:48:02 +00:00
ret2win.md Translated ['exploiting/linux-exploiting-basic-esp/README.md', 'reversin 2024-04-02 19:48:36 +00:00
rop-return-oriented-programing.md Translated ['reversing-and-exploiting/linux-exploiting-basic-esp/common- 2024-03-31 17:34:45 +00:00
rop-syscall-execv.md Translated ['exploiting/linux-exploiting-basic-esp/README.md', 'reversin 2024-04-02 19:48:36 +00:00
srop-sigreturn-oriented-programming.md Translated ['reversing-and-exploiting/linux-exploiting-basic-esp/common- 2024-03-31 17:34:45 +00:00
stack-pivoting-ebp2ret-ebp-chaining.md Translated ['exploiting/linux-exploiting-basic-esp/README.md', 'reversin 2024-04-02 19:48:36 +00:00
stack-shellcode.md Translated ['exploiting/linux-exploiting-basic-esp/README.md', 'reversin 2024-04-02 19:48:36 +00:00

Kujaa Kwa Stack

Jifunze kuhusu kuhack AWS kutoka mwanzo hadi mtaalamu na htARTE (HackTricks AWS Red Team Expert)!

Njia nyingine za kusaidia HackTricks:

Ni Nini Kujaa Kwa Stack

Kujaa kwa stack ni udhaifu unapotokea programu inapoandika data zaidi kwenye stack kuliko ilivyotengewa kuhifadhi. Data hii ya ziada ita zifuta nafasi ya kumbukumbu inayopakana, ikisababisha uharibifu wa data halali, kuvuruga mtiririko wa udhibiti, na kwa uwezekano utekelezaji wa msimbo wa kudhuru. Tatizo hili mara nyingi hutokea kutokana na matumizi ya kazi zisizo salama ambazo hazifanyi ukaguzi wa mipaka kwenye data zinazoingia.

Tatizo kuu la kufuta huku ni kwamba viashiria vya EIP na EBP vya kurudi kwenye kazi iliyotangulia huhifadhiwa kwenye stack. Hivyo, mshambuliaji ataweza kuzifuta hizo na kudhibiti mtiririko wa utekelezaji wa programu.

Udhaifu huu kawaida hutokea kwa sababu kazi inafanya nakala ndani ya stack ya herufi zaidi kuliko kiwango kilichotengwa kwa hiyo, hivyo kuweza kufuta sehemu nyingine za stack.
Baadhi ya kazi za kawaida zenye udhaifu huu ni: strcpy, strcat, sprintf, gets, fgets...

Kwa mfano, kazi zifuatazo zinaweza kuwa na udhaifu:

void vulnerable() {
char buffer[128];
printf("Enter some text: ");
gets(buffer); // This is where the vulnerability lies
printf("You entered: %s\n", buffer);
}

Kupata Mafuriko ya Stack

Njia ya kawaida ya kupata mafuriko ya stack ni kutoa kuingia kikubwa sana cha As (k.m. python3 -c 'print("A"*1000)') na kutarajia Segmentation Fault inayoashiria kwamba anwani 0x41414141 ilijaribiwa kufikiwa.

Zaidi ya hayo, mara baada ya kugundua kuwa kuna udhaifu wa Mafuriko ya Stack, utahitaji kupata ofseti mpaka iwezekane kubadilisha kidude cha EIP, kwa hili kawaida hutumika De Bruijn sequence. Ambayo kwa alfabeti iliyopewa ya ukubwa k na subsekwensi za urefu n ni mfululizo wa mzunguko ambapo kila subsekwensi inayowezekana ya urefu n inaonekana mara moja tu kama subsekwensi inayopatikana.

Kwa njia hii, badala ya kuhitaji kufikiria ni ofseti ipi inayobadilisha EIP kwa mkono, ni rahisi kutumia mojawapo ya mfululizo huu kama kujaza na kisha kupata ofseti ya byte ambazo mwishowe zilibadilisha hiyo.

Inawezekana kutumia pwntools kwa hili:

from pwn import *

# Generate a De Bruijn sequence of length 1000 with an alphabet size of 256 (byte values)
pattern = cyclic(1000)

# This is an example value that you'd have found in the EIP/IP register upon crash
eip_value = p32(0x6161616c)
offset = cyclic_find(eip_value)  # Finds the offset of the sequence in the De Bruijn pattern
print(f"The offset is: {offset}")

au GEF:

#Patterns
pattern create 200 #Generate length 200 pattern
pattern search "avaaawaa" #Search for the offset of that substring
pattern search $rsp #Search the offset given the content of $rsp

Kudukua Maburuzi ya Stack

Wakati wa kudukua (ukiwa na ukubwa wa kutosha), utaweza kubadilisha thamani za mengine variables ndani ya maburuzi mpaka ufikie EBP na EIP (au hata zaidi).
Njia ya kawaida ya kutumia udhaifu huu ni kwa kubadilisha kielekezi cha EIP ili wakati wa kumaliza kazi mtiririko wa udhibiti utaelekezwa mahali ambapo mtumiaji alipendekeza kwenye kielekezi hiki.

Hata hivyo, katika mazingira mengine labda kubadilisha thamani za baadhi ya variables kwenye maburuzi inaweza kuwa ya kutosha kwa udanganyifu (kama katika changamoto rahisi za CTF).

Ret2win

Katika aina hii ya changamoto za CTF, kuna kazi ndani ya faili ya binary ambayo haijawahi kuitwa na unahitaji kuipiga ili ushinde. Kwa changamoto hizi unahitaji tu kupata kielekezi cha kubadilisha EIP na kupata anwani ya kazi ya kupiga simu (kawaida ASLR itakuwa imelemazwa) ili wakati kazi yenye udhaifu inaporudi, kazi iliyofichwa itaitwa:

{% content-ref url="ret2win.md" %} ret2win.md {% endcontent-ref %}

Shellcode ya Maburuzi

Katika hali hii, mkaidi anaweza kuweka shellcode kwenye maburuzi na kutumia EIP iliyodhibitiwa kwenda kwenye shellcode na kutekeleza kanuni za mkaidi:

{% content-ref url="stack-shellcode.md" %} stack-shellcode.md {% endcontent-ref %}

ROP

Mbinu hii ni mfumo msingi wa kukiuka kinga kuu kwa mbinu ya awali: Maburuzi yasiyoweza kutekelezwa. Na inaruhusu kutekeleza mbinu zingine kadhaa (ret2lib, ret2syscall...) ambazo mwishowe zitatekeleza amri za kupindukia kwa kutumia maagizo yaliyopo kwenye binary:

{% content-ref url="rop-return-oriented-programing.md" %} rop-return-oriented-programing.md {% endcontent-ref %}

Aina za kinga

Kuna kinga kadhaa zinajaribu kuzuia udanganyifu wa udhaifu, zitazame hapa:

{% content-ref url="../common-binary-protections-and-bypasses/" %} common-binary-protections-and-bypasses {% endcontent-ref %}

Jifunze kudukua AWS kutoka sifuri hadi shujaa na htARTE (HackTricks AWS Red Team Expert)!

Njia nyingine za kusaidia HackTricks: