Alphanumeric Shellcode
在攻击过程中,由于被攻击的应用程序的字符串过滤功能,我们有时候可能会需要完全由字母数字组成的shellcode。
通过msfvenom可以很容易产生上述要求的shellcode。
比如我们要产生一个混合了大小写编码的字母数字的shellcode,可以如下图操作:
我们启动python的交互界面
然后把之前输出的buf的内容全部复制过来
之后将其打印
如果仔细看看shellcode,你会看到一些非字母数字的字符
这是由于在payload开始前的操作码(x89\xe7\xdb\xd7\xd9\x77)。这些操作码是为了在内存中找到有效载荷的绝对位置和获得不依赖于位置的shellcode。
一旦通过前两条指令获得了我们的shellcode地址,它将被压入堆栈并存储在ECX寄存器中,然后用于计算相对偏移量。但是,如果我们能够自己获得shellcode的绝对位置,并在运行shellcode之前将这个地址保存在一个寄存器中,我们可以在编码我们的有效载荷时使用BufferRegister = REG32这个特殊选项:
和之前的操作一样,我们也是在python交互环境中输出buf看看
首先启动python
然后把shellcode的buf部分复制过来
然后使用print打印
可以看到这次是完全的由字母和数字组成的shellcode
这种用法,相当于我们告诉msfencode,我们负责查找shellcode绝对地址,并将其保存在ECX寄存器中。
正如我们在前面看到的那样,ECX之前被设置为了指向我们的字母数字shellcode的开始。在这一点上,我们的有效载荷开始直接重新对准ECX开始shellcode解码序列。