Я хочу разместить содержимое файла, записанное в строке, со специальным символом, определенным в строке / URL-адресе, взятом из консоли в Ruby - PullRequest
0 голосов
/ 22 января 2012

Я пытаюсь написать простой фаззер в Ruby, который будет построчно получать значения из текстового файла, и эти значения заменяются символом $ fuzz $ в параметре GET URL, введенном пользователем из консоли.

Я написал такой код:

require 'net/http'

uri = URI(gets())

Net::HTTP.start(uri.host, uri.port) do |http|
  request = Net::HTTP::Get.new uri.request_uri
  response = http.request request 
  puts response.body
end

Я запутался, как я могу заменить символ $ fuzz $, заданный пользователем из консоли в GET-запросе, содержимым файла в строке по одной.

как первая строка файла 'или 1 = 1, и я хочу заменить символ $ fuzz $, написанный в каком-то запросе GET /item.php?id=$fuzz$, на содержимое этой строки из файла, а затем захотеть запустить эти запрос.

Например, я беру URL-адрес из консоли, например, example.com/item.php?id=fuzz, теперь я открываю один файл, содержащий несколько строк. Я хочу отредактировать этот URL-адрес, взятый из консоли, со словом «fuzz», замененным строкой файла, один за другим, и хочу отправить эти URL-запросы с заменой содержимого файла на слово fuzz в параметре запроса GET, а затем сохранить все ответы в новом файле. .

1 Ответ

0 голосов
/ 23 января 2012

Вы хотите разделить это на два класса

require 'net/http'

class FileIdExtractor
  def ids_from_file(path_to_file)
    file = File.open(path_to_file) or die "Unable to open file..."
    content_array=[]
    file.each_line {|line| contentArray.push line }
    content_array
  end
end

class UrlToFile
  def initialize(url)
    @url = url
  end

  def write_content_to_file_for_id(id, doc)
    local_filename = "/tmp/#{id}.html"
    File.open(local_filename, 'w') {|f| f.write(doc) }
  end

  def get_html_content_from_id(id)
    full_url = @url + id
    open(full_url).read
  end

end

# to run it, something like
puts "What is the URL. use format http://example.com/item.php?id="
url = gets
ids = FileIdExtractor.new.ids_from_file("your-file-path")
ids.each do |id|
  url = UrlToFile.new(url)
  doc = url.get_html_content_from_id(id)
  url.write_content_to_file_for_id(id, doc)
end
...