Я пытаюсь создать оболочку в командной строке без защиты стека, эта программа принимает в два входа число и дату.Аргумент input для bufferoverflow
./convert <number> <date>
и я хочу переполнения буфера теперь я пытаюсь сделать
[nop sled] ..... [shell code] ..... [return address]
моя проблема заключается в том, когда я передать NOP, через командную строку (или, точнее, в GDB). В GDB, когда я делаю пробег с аргументами: 1 \x90\x90\x90\x90.... 700
байт стоит, то, что он принимает в качестве входных данных, является фактическими символами '\' 'x' '9' '0'
как противостоящие шестнадцатеричному значению для nop
. Как я могу ввести это правильно? (Я знаю это, потому что EIP дает мне 39785c30
, что переводится как 9x\0
). Что я могу сделать по этому поводу?
Почему так много сообщений о том, что они делают что-то неправильно? Есть ли внезапный глобальный дефицит ошибок? Если это так, это еще одна записка, которую я не получил. –
Ответ зависит от кодировки вашего символа, но если вы используете 8-бит ascii, тогда у É, похоже, есть код ascii 0x90. (E с accute accent) –
@ KlasLindbäck Позволяет сказать, что я просто вхожу в команду через CLI, эта строка с кодом оболочки nop sled и адресом возврата. Я использую bash. Я не знаю, почему он не будет вводить шестнадцатеричный аргумент против символов. – Kevin