metasploit之字母数字的shellcode

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解码序列。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值