hacktricks/binary-exploitation/arbitrary-write-2-exec/www2exec-.dtors-and-.fini_array.md

4.7 KiB

WWW2Exec - .dtors & .fini_array

{% hint style="success" %} Jifunze na zoea AWS Hacking:Mafunzo ya HackTricks AWS Timu Nyekundu Mtaalam (ARTE)
Jifunze na zoea GCP Hacking: Mafunzo ya HackTricks GCP Timu Nyekundu Mtaalam (GRTE)

Support HackTricks
{% endhint %}

.dtors

{% hint style="danger" %} Leo ni kigeni sana kupata faili ya binary na sehemu ya .dtors! {% endhint %}

Waharibifu ni kazi ambazo zina tekelezwa kabla ya programu kukamilika (baada ya kazi ya main kukamilika).
Anwani za kazi hizi zimehifadhiwa ndani ya sehemu ya .dtors ya binary na kwa hivyo, ikiwa utaweza kuandika anwani ya shellcode katika __DTOR_END__ , hiyo itatekelezwa kabla ya programu kukamilika.

Pata anwani ya sehemu hii na:

objdump -s -j .dtors /exec
rabin -s /exec | grep “__DTOR”

Kawaida utapata alama za DTOR kati ya thamani ffffffff na 00000000. Kwa hivyo ikiwa unaona thamani hizo tu, inamaanisha kwamba hakuna kazi iliyoandikishwa. Kwa hivyo badilisha 00000000 na anwani ya shellcode ili kuitekeleza.

{% hint style="warning" %} Kwa hakika, kwanza unahitaji kupata mahali pa kuhifadhi shellcode ili baadaye uitee. {% endhint %}

.fini_array

Kimsingi hii ni muundo na kazi ambazo zitaitwa kabla ya programu kukamilika, kama .dtors. Hii ni ya kuvutia ikiwa unaweza kuita shellcode yako kwa kuruka kwenye anwani, au katika hali ambapo unahitaji kurudi kwenye main tena ili kutumia udhaifu mara ya pili.

objdump -s -j .fini_array ./greeting

./greeting:     file format elf32-i386

Contents of section .fini_array:
8049934 a0850408

#Put your address in 0x8049934

Mzunguko wa milele

Ili kutumia .fini_array kupata mzunguko wa milele unaweza angalia kilichofanyika hapa: Ikiwa una angalau vitu 2 katika .fini_array, unaweza:

  • Tumia andika yako ya kwanza kuita kazi ya andika isiyo na mpangilio tena
  • Kisha, hesabu anwani ya kurudi kwenye stakabadilishwa na __libc_csu_fini (kazi inayoitwa na .fini_array zote) na weka huko anwani ya __libc_csu_fini
  • Hii itafanya __libc_csu_fini kuita yenyewe tena ikitekeleza kazi za .fini_array tena ambayo itaita kazi ya WWW isiyo na kinga mara 2: moja kwa andika isiyo na mpangilio na nyingine kwa kubadilisha tena anwani ya kurudi ya __libc_csu_fini kwenye stakabadilisha kuita yenyewe tena.

{% hint style="danger" %} Tambua kwamba na Full RELRO, sehemu ya .fini_array inafanywa kuwa soma-tu. Katika toleo jipya, hata na [Partial RELRO] sehemu ya .fini_array inafanywa kuwa soma-tu pia. {% endhint %}

{% hint style="success" %} Jifunze & zoezi la Udukuzi wa AWS:Mafunzo ya HackTricks AWS Red Team Expert (ARTE)
Jifunze & zoezi la Udukuzi wa GCP: Mafunzo ya HackTricks GCP Red Team Expert (GRTE)

Support HackTricks
{% endhint %}