Шестнадцатеричный ввод в командной строке Windows - PullRequest
2 голосов
/ 28 августа 2011

Я пытаюсь решить эту загадку программирования, которую выпустил другой ученик в моей школе, и нам дали .exe и соответствующий исходный код .c.Я пытаюсь решить проблему с помощью переполнения буфера, и мне удалось сделать это в Linux, используя в качестве входных данных скрипт perl, чтобы я мог ввести шестнадцатеричные значения для адреса возврата.

Проблема в том, что мы должны сделать это с помощью .exe в Windows, и я не знаю, как ввести шестнадцатеричные значения в командной строке.Для версии Linux я использовал этот вопрос: шестнадцатеричные значения во входных файлах GDB и мой код в конечном итоге был таким:

./a.out $(perl -e 'print "A"x34 . "\x7d\x86\x04\x08";')

Как мне поступитьделать это в командной строке Windows?

Спасибо за любую помощь, которую вы можете оказать, и я заранее извиняюсь, если мой вопрос каким-то образом отсутствует;Я очень новичок в этом деле.

1 Ответ

1 голос
/ 28 августа 2011

У вас есть несколько вариантов

  1. Установите пакет PERL или PYTHON для Windows. Тогда вы можете сделать то же самое, что и в Linux.

  2. Если у вас есть powershell, вы можете выполнить некоторые сценарии, как указано в ссылке ниже:

http://www.sans.org/windows-security/2010/02/11/powershell-byte-array-hex-convert/

Обратите внимание, что при компиляции исходного кода для Windows произойдет изменение структуры стека и положения EIP. И, следовательно, та же полезная нагрузка может не работать, которая работала в Linux.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...