Module: PWN::Plugins::Sqlmap

Defined in:
lib/pwn/plugins/sqlmap.rb

Overview

sqlmap wrapper to pair with SAST SQL detection.

Class Method Summary collapse

Class Method Details

.authorsObject



25
26
27
# File 'lib/pwn/plugins/sqlmap.rb', line 25

public_class_method def self.authors
  "AUTHOR(S):\n  0day Inc. <[email protected]>\n"
end

.helpObject



29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/pwn/plugins/sqlmap.rb', line 29

public_class_method def self.help
  puts "USAGE:
    # List host binaries this module expects to be installed.
    #{self}.required_bins

    # Run run and return its result
    #{self}.run(
      url: 'required - HTTP(S) URL',
      level: 'optional - level value consumed by #run',
      data: 'optional - data value consumed by #run',
      dbs: 'optional - dbs value consumed by #run'
    )

    # Print the AUTHOR(S) string for this module.
    #{self}.authors
  "
  constants.sort
end

.required_binsObject



9
10
11
# File 'lib/pwn/plugins/sqlmap.rb', line 9

public_class_method def self.required_bins
  %w[sqlmap]
end

.run(opts = {}) ⇒ Object



13
14
15
16
17
18
19
20
21
22
23
# File 'lib/pwn/plugins/sqlmap.rb', line 13

public_class_method def self.run(opts = {})
  PWN::Plugins::PreflightChecker.require_bin!(name: 'sqlmap')
  url = opts[:url].to_s
  raise 'ERROR: url is required' if url.empty?

  cmd = ['sqlmap', '-u', url, '--batch', '--level', (opts[:level] || 1).to_s]
  cmd += ['--data', opts[:data].to_s] if opts[:data]
  cmd << '--dbs' if opts[:dbs]
  stdout, stderr, status = Open3.capture3(*cmd)
  { stdout: stdout, stderr: stderr, exit: status.exitstatus }
end