Print Stack Canary

Wesprzyj HackTricks

Powiększ wydrukowany stos

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:

Dowolne odczytywanie

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 Strings
Wesprzyj HackTricks

Last updated