Ret2ret & Reo2pop

Support HackTricks

Ret2ret

Lengo kuu la mbinu hii ni kujaribu kupita ASLR kwa kutumia pointer iliyopo kwenye stack.

Kimsingi, mifuriko ya stack mara nyingi husababishwa na strings, na strings huishia na byte ya null mwishoni kwenye kumbukumbu. Hii inaruhusu kujaribu kupunguza mahali kinacholengwa na pointer iliyopo tayari kwenye stack. Kwa hivyo, ikiwa stack ilikuwa na 0xbfffffdd, mifuriko hii inaweza kuibadilisha kuwa 0xbfffff00 (zingatia byte ya mwisho iliyozuiliwa).

Ikiwa anwani hiyo inalenga shellcode yetu kwenye stack, ni rahisi kufanya mwendelezo ufikie anwani hiyo kwa kuongeza anwani kwenye maagizo ya ret hadi ifikie hiyo.

Kwa hivyo shambulio litakuwa kama ifuatavyo:

  • NOP sled

  • Shellcode

  • Kufunika stack kutoka kwa EIP na anwani za ret (RET sled)

  • 0x00 iliyoongezwa na string kubadilisha anwani kutoka kwenye stack ikilenga kwenye NOP sled

Kufuata kiunganishi hiki unaweza kuona mfano wa binary inayoweza kushambuliwa na katika hii shambulio.

Ret2pop

Ikiwa unaweza kupata pointer kamili kwenye stack ambayo haitaki kubadilishwa (katika ret2ret tulibadilisha byte ya chini ya mwisho kuwa 0x00), unaweza kufanya shambulio sawa la ret2ret, lakini urefu wa RET sled lazima uwe mfupi kwa 1 (hivyo 0x00 ya mwisho inafunika data moja kabla ya pointer kamili), na anwani ya mwisho ya RET sled lazima ilenge pop <reg>; ret. Kwa njia hii, data kabla ya pointer kamili itaondolewa kwenye stack (hii ni data inayoguswa na 0x00) na ret ya mwisho italenga anwani kamili kwenye stack bila mabadiliko yoyote.

Kufuata kiunganishi hiki unaweza kuona mfano wa binary inayoweza kushambuliwa na katika hii shambulio.

Marejeo

Support HackTricks

Last updated