Как записать значение в адрес при атаке строки формата

Я прохожу курс по безопасности, который требует от нас атаковать строку формата на виртуальной машине unix. Уязвимость представляет собой строку формата, использующую аргумент командной строки.

Мой вопрос: как мне записать значение в адрес в строке формата (например, записать адрес кода оболочки в адрес возврата функции)?

Например, Я пробовал несколько строк вроде «AAAA_% 10 $ x» , и это может привести к тому, что программа напечатает AAAA_41414141 .

Затем я заменяю буквы своим адресом и пытаюсь перезаписать это.

\xdd\xcc\xbb\xaa_%10$x_%54321x_%n"

Но это не работает. Я вижу статью, в которой говорится, что мне следует использовать меньшее число в % 54321x , поскольку есть некоторые символы, которые я уже написал, но я не знаю, сколько символов я написал раньше % 54321x , либо

примечание: в среде установлена ​​старая версия gcc, поэтому не стоит беспокоиться о том, что значение слишком велико. Какие-либо предложения? Спасибо.

8
задан Alex Ng 31 January 2011 в 19:33
поделиться