Drukowanie Stack Canary

Reading time: 3 minutes

tip

Ucz się i ćwicz AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Wsparcie HackTricks

Powiększenie drukowanego stosu

Wyobraź sobie sytuację, w której program podatny na przepełnienie stosu może wykonać funkcję puts wskazującą na część przepełnienia stosu. Napastnik wie, że pierwszy bajt canary to bajt null (\x00), a reszta canary to losowe bajty. Następnie napastnik może stworzyć przepełnienie, które nadpisuje stos aż do pierwszego bajtu canary.

Następnie napastnik wywołuje funkcjonalność puts w środku ładunku, co wydrukuje całą canary (z wyjątkiem pierwszego bajtu null).

Dzięki tym informacjom napastnik może stworzyć i wysłać nowy atak, znając canary (w tej samej sesji programu).

Oczywiście, ta taktyka jest bardzo ograniczona, ponieważ napastnik musi być w stanie wydrukować zawartość swojego ładunku, aby wyekstrahować canary, a następnie być w stanie stworzyć nowy ładunek (w tej samej sesji programu) i wysłać prawdziwe przepełnienie bufora.

Przykłady CTF:

Dowolne Odczyty

Z dowolnym odczytem jak ten dostarczony przez ciągi formatowe może być możliwe wyciekanie canary. Sprawdź ten przykład: https://ir0nstone.gitbook.io/notes/types/stack/canaries i możesz przeczytać o nadużywaniu ciągów formatowych do odczytu dowolnych adresów pamięci w:

{{#ref}} ../../format-strings/ {{#endref}}

tip

Ucz się i ćwicz AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Wsparcie HackTricks