Содержимое уязвимой строковой атаки - PullRequest
0 голосов
/ 11 ноября 2018

Я изучаю атаку строки формата и пытаюсь понять, как строка перед строкой формата перезаписывает содержимое адреса.

Я читаю из замечательной статьи: http://www.cis.syr.edu/~wedu/Teaching/cis643/LectureNotes_New/Format_String.pdf

Я понимаю, что если пользователь имеет контроль над переменной, которая будет напечатана в printf, такой как

printf (Uservariable);

пользователь может не передавать переменные после форматирования строк и изменять содержимое адреса, используя такие строки, как

printf ("\ x10 \ x01 \ x48 \ x08% x% x% x% x% s");

Однако, как показано на диаграмме ниже, 0x10014808 вписывается в адрес, когда он должен быть в пробелах, показанных ниже.

Как% x объединяет все числа, чтобы сформировать адрес для перезаписи% s?

Stack Diagram from link

...