2.6 KiB

Drukowanie Stack Canary

{{#include ../../../banners/hacktricks-training.md}}

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 zapewniony 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}}

{{#include ../../../banners/hacktricks-training.md}}