Print Stack Canary
Last updated
Last updated
Dowiedz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Dowiedz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Wyobraź sobie sytuację, w której program podatny na przepełnienie stosu może wykonać funkcję puts wskazującą na część przepełnionego stosu. Atakujący wie, że pierwszy bajt kanarka to bajt nullowy (\x00
), a reszta kanarka to losowe bajty. Następnie atakujący może stworzyć przepełnienie, które nadpisuje stos aż do pierwszego bajtu kanarka.
Następnie atakujący wywołuje funkcję puts na środku ładunku, co spowoduje wydrukowanie całego kanarka (oprócz pierwszego bajtu nullowego).
Dzięki tym informacjom atakujący może stworzyć i wysłać nowy atak, znając kanarka (w tej samej sesji programu).
Oczywiście ta taktyka jest bardzo ograniczona, ponieważ atakujący musi być w stanie wydrukować zawartość swojego ładunku, aby wyciec kanarka, a następnie móc stworzyć nowy ładunek (w tej samej sesji programu) i wysłać rzeczywiste przepełnienie bufora.
Przykłady CTF:
64 bity, ASLR włączone, ale brak PIE, pierwszym krokiem jest zapełnienie przepełnienia aż do bajtu 0x00 kanarka, a następnie wywołanie puts i wyciek kanarka. Z kanarka tworzony jest gadget ROP do wywołania puts w celu wycieku adresu puts z GOT, a następnie gadget ROP do wywołania system('/bin/sh')
32 bity, ARM, brak relro, kanarka, nx, brak pie. Przepełnienie z wywołaniem puts w celu wycieku kanarka + ret2lib wywołujący system
z łańcuchem ROP do pop r0 (arg /bin/sh
) i pc (adres system)
Dzięki dowolnemu odczytowi jak ten dostarczany przez łańcuchy formatujące może być możliwe wyciek kanarka. Sprawdź ten przykład: https://ir0nstone.gitbook.io/notes/types/stack/canaries i przeczytaj o nadużywaniu łańcuchów formatujących do odczytywania dowolnych adresów pamięci w:
Format StringsTo wyzwanie nadużywa w bardzo prosty sposób łańcucha formatującego do odczytania kanarka ze stosu
Dowiedz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Dowiedz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)