Print Stack Canary
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Fikiria hali ambapo programu iliyo hatarini kwa stack overflow inaweza kutekeleza kazi ya puts ikiashiria sehemu ya stack overflow. Mshambuliaji anajua kwamba byte ya kwanza ya canary ni byte ya null (\x00
) na sehemu nyingine za canary ni bytes za nasibu. Kisha, mshambuliaji anaweza kuunda overflow ambayo inaandika kwenye stack hadi byte ya kwanza ya canary.
Kisha, mshambuliaji anaita kazi ya puts katikati ya payload ambayo it chapisha canary yote (isipokuwa byte ya kwanza ya null).
Kwa habari hii mshambuliaji anaweza kuunda na kutuma shambulio jipya akijua canary (katika kikao hicho hicho cha programu).
Kwa wazi, mbinu hii ni kikomo kwani mshambuliaji anahitaji kuwa na uwezo wa kuchapisha maudhui ya payload yake ili kuondoa canary na kisha aweze kuunda payload mpya (katika kikao hicho hicho cha programu) na kutuma overflow halisi ya buffer.
CTF examples:
64 bit, ASLR imewezeshwa lakini hakuna PIE, hatua ya kwanza ni kujaza overflow hadi byte 0x00 ya canary ili kisha kuita puts na kuondoa. Kwa canary gadget ya ROP inaundwa kuitwa puts ili kuondoa anwani ya puts kutoka GOT na gadget ya ROP kuitwa system('/bin/sh')
32 bit, ARM, hakuna relro, canary, nx, hakuna pie. Overflow na wito kwa puts juu yake ili kuondoa canary + ret2lib ikitumia system
na mchain ya ROP kuondoa r0 (arg /bin/sh
) na pc (anwani ya system)
Kwa kusoma kwa nasibu kama ile inayotolewa na format strings inaweza kuwa inawezekana kuondoa canary. Angalia mfano huu: https://ir0nstone.gitbook.io/notes/types/stack/canaries na unaweza kusoma kuhusu kutumia format strings kusoma anwani za kumbukumbu za nasibu katika:
Format StringsChangamoto hii inatumia kwa njia rahisi sana format string kusoma canary kutoka kwenye stack
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)