【发布时间】:2014-02-14 18:41:17
【问题描述】:
当我运行代码的以下部分时,出现“nil:NilClass 的未定义方法 `each'”错误。
if request and request.body
print_status(request.body);
request.body.split('&').each { |var|
parts = var.split('=', 2)
if parts.length != 2
print_error("Weird, we got a var that doesn't contain an equals: #{parts.inspect}")
else
fln,fld = parts
fld = Rex::Text.uri_decode(fld)
if fln == "script"
script = fld
end
end
}
end
一些使用 request.body 的测试:
大多数特殊字符都会导致错误发生。
有什么问题?
【问题讨论】:
-
什么是
request.body?一个字符串? -
真的是
request.body.split('&').each行抛出异常吗?如果request.body.split('&')始终是一个字符串,我看不到这里的问题。 -
request.body.split('&') 返回一个包含 1 项的数组。是的,它是整个 rb 文件中唯一的 each。
-
可能每个都在其他地方定义。你能发布你的回溯吗? (例如,
Rex::Text.url_encode方法中可能有each)。拆分总是返回一个数组,所以它必须在其他地方。 -
Rex::Text 内部没有方法 url_encode。有uri_encode / uri_decode。查看来源:dev.metasploit.com/api/Rex/Text.html#uri_encode-class_methoddev.metasploit.com/api/Rex/Text.html#uri_decode-class_method
标签: ruby metasploit