Как скопировать символ BS (0x08) для ввода для переполнения буфера в GDB?

282
Post Self

Мне нужно переполнить буфер конкретным значением, которое содержит 0x08. Если я использую echo -ne "AA\x08A", вывод AA, как символ возврата и один A удаляются.

Как мне скопировать это значение на вход моей уязвимой программы? Я хотел бы, чтобы он был в GBD, чтобы потом я мог проверить стек.

0
Note that this is not actually a security question since all you care about is outputting some characters. It does not matter at all for your question that you want to feed these characters into a vulnerable program. Steffen Ullrich 6 лет назад 0
@SteffenUllrich Yes, I know. I didn't know a better site for this. I thought that people here know this, as they used it in the past Post Self 6 лет назад 0

1 ответ на вопрос

1
Steffen Ullrich

Если я использую echo -ne "AA \ x08A", вывод будет AA, так как символ возврата на одну позицию и один A удаляются.

Это выглядит только потому, что вы выводите выходные данные на терминал, и в этом случае обратное пространство имеет особое значение: удалите предыдущий символ, аналогичный тому, который вы получаете при нажатии клавиши возврата на клавиатуре. Это означает, что он отобразит первый A, второй A, удалит второй A и вернется после первого A и отобразит 4-й символ, то есть A:

 $ echo -ne "AA\x08A" AA 

Но на самом деле он напечатает все 4 октета - так как дисплей с hd(или hexdumpили xxd...) покажет:

 $ echo -ne "AA\x08A" | hd 00000000 41 41 08 41 |AA.A| 

И те же 4 символа также будут напечатаны в любой другой программе, например, в вашем уязвимом скрипте perl:

$ echo -ne "AA\x08A" | perl -e 'print unpack("H*",<STDIN>),"\n"' 41410841 
Thank you, I will try loading the input from a file in a second. That might solve the problem Post Self 6 лет назад 0

Похожие вопросы