gpt4 book ai didi

ruby - "payload"中的 "payload.encoded"在 metasploit 的利用中来自哪里?

转载 作者:太空宇宙 更新时间:2023-11-03 16:02:15 26 4
gpt4 key购买 nike

我正在分析一个 metasploit 漏洞 here我试图弄清楚 payload.encoded 中的 payload 来自第 358 行。我是开发开发的新手,但基本的编程规则说 payload 应该在调用任何函数之前初始化。我没有看到 payload 被初始化为任何值。第 56 行有一个 Payload,但它的第一个字母是大写的,所以这是不同的(Ruby 区分大小写)。这意味着 payload 可能是从某个类继承的。但是,如果它是从某个类继承的,为什么要对它进行编码呢?为什么不在其中填充一个新值呢?特别是,我正在寻找 payload 用于编码的值是什么。如果有人能帮助我理解这一点,那将是一个很大的帮助。非常感谢!

最佳答案

所以,它是 Ruby,漏洞利用类派生自 Msf::Exploit::Remote,而后者来自 msf/core。通过代码导航到 lib/msf/core.rb,并看到它需要来自 core/payload。打开该文件:

https://github.com/rapid7/metasploit-framework/blob/master/lib/msf/core/payload.rb

第 179 行,定义了一个函数 payload,你可以看到它从 return module_info['Payload'] 中提取了 payload? module_info['Payload']['Payload'] : 无

回到最初的 exploit,我们看到它是用 module_info 函数和这个值初始化的:

      'Payload'        =>
{
'Space' => 4096,
# NOTE: \xff are avoided here so we can control the number of them being sent.
'BadChars' => "\x09\x0a\x0b\x0c\x0d\x20\xff",
'DisableNops' => 'True',
},

更多的探索让我们在 lib/msf/base/simple/payload.rb 中得到了这个:

 payload._import_extra_options(opts)
framework = payload.framework

# Generate the payload
e = EncodedPayload.create(payload,

然后我们在lib/msf/core/encoded_pa​​yload.rb中找到EncodedPayload,看到它调用了generate方法,就是是什么设置了 encoded 方法。在该文件中多翻找一下,我们找到了用于生成它的 encode 方法。编码器是从“兼容编码器”列表中提取的,这些编码器显然是从平台中提取的(请参阅 https://github.com/rapid7/metasploit-framework/blob/f0fd2f05983083d84d635d8689237151663902e5/lib/msf/core/payload.rb#L413)

长话短说,有效负载来自上面的 BadChars,并且使用平台相关的编码器进行编码。

关于ruby - "payload"中的 "payload.encoded"在 metasploit 的利用中来自哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21814702/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com