#[non_exhaustive]pub struct SqlmapOptions {Show 51 fields
pub url: Option<String>,
pub test_parameter: Option<String>,
pub dbms: Option<String>,
pub tech: Option<String>,
pub level: Option<i32>,
pub risk: Option<i32>,
pub string: Option<String>,
pub not_string: Option<String>,
pub regexp: Option<String>,
pub code: Option<i32>,
pub text_only: Option<bool>,
pub titles: Option<bool>,
pub cookie: Option<String>,
pub headers: Option<String>,
pub method: Option<String>,
pub data: Option<String>,
pub random_agent: Option<bool>,
pub proxy: Option<String>,
pub prefix: Option<String>,
pub suffix: Option<String>,
pub tamper: Option<String>,
pub skip: Option<String>,
pub skip_static: Option<bool>,
pub threads: Option<i32>,
pub verbose: Option<i32>,
pub batch: Option<bool>,
pub retries: Option<i32>,
pub get_dbs: Option<bool>,
pub get_tables: Option<bool>,
pub get_columns: Option<bool>,
pub get_users: Option<bool>,
pub get_passwords: Option<bool>,
pub get_privileges: Option<bool>,
pub is_dba: Option<bool>,
pub current_user: Option<bool>,
pub current_db: Option<bool>,
pub dump_all: Option<bool>,
pub dump_table: Option<bool>,
pub search: Option<bool>,
pub os_shell: Option<bool>,
pub sql_shell: Option<bool>,
pub file_read: Option<String>,
pub file_write: Option<String>,
pub file_dest: Option<String>,
pub tor: Option<bool>,
pub tor_port: Option<i32>,
pub tor_type: Option<String>,
pub crawl_depth: Option<i32>,
pub scope: Option<String>,
pub forms: Option<bool>,
pub second_url: Option<String>,
}Expand description
Configuration payload mapped directly to SQLMap CLI arguments.
All fields are optional and use skip_serializing_if so only
explicitly set values are sent to the REST API.
§Examples
use sqlmap_rs::SqlmapOptions;
let opts = SqlmapOptions::builder()
.url("http://example.com/api?id=1")
.level(3)
.risk(2)
.batch(true)
.threads(4)
.build();Fields (Non-exhaustive)§
This struct is marked as non-exhaustive
Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.url: Option<String>The target URL.
test_parameter: Option<String>Target specific parameter(s), e.g. “id”.
dbms: Option<String>Specific DBMS backend, e.g. “MySQL”.
tech: Option<String>Payload techniques to test (B=Boolean, T=Time, E=Error, U=UNION, S=Stacked).
level: Option<i32>Level of tests to perform (1-5, default 1).
risk: Option<i32>Payload risk (1-3, default 1).
string: Option<String>String to match for True on boolean-based blind injection.
not_string: Option<String>String to match for False on boolean-based blind injection.
regexp: Option<String>Regex to match for True on boolean-based blind injection.
code: Option<i32>HTTP code to match for True query.
text_only: Option<bool>Compare responses using text only.
titles: Option<bool>Compare responses using titles only.
HTTP Cookie header value.
headers: Option<String>HTTP headers string.
method: Option<String>Force specific HTTP method.
data: Option<String>POST data string.
random_agent: Option<bool>Use randomly selected User-Agent.
proxy: Option<String>HTTP proxy URL.
prefix: Option<String>Injection payload prefix string.
suffix: Option<String>Injection payload suffix string.
tamper: Option<String>Tamper script(s) for WAF evasion.
skip: Option<String>Skip testing specific parameters.
skip_static: Option<bool>Skip testing parameters that appear static.
threads: Option<i32>Number of concurrent threads (default 1).
verbose: Option<i32>Output verbosity level (1-6).
batch: Option<bool>Do not ask for user input (must be true for automation).
retries: Option<i32>Number of retries on connection timeout.
get_dbs: Option<bool>Enumerate DBMS databases.
get_tables: Option<bool>Enumerate DBMS database tables.
get_columns: Option<bool>Enumerate DBMS database columns.
get_users: Option<bool>Enumerate DBMS users.
get_passwords: Option<bool>Enumerate DBMS users password hashes.
get_privileges: Option<bool>Enumerate DBMS users privileges.
is_dba: Option<bool>Check if the DBMS user is DBA.
current_user: Option<bool>Retrieve the current DBMS user.
current_db: Option<bool>Retrieve the current DBMS database.
dump_all: Option<bool>Dump all DBMS databases tables entries.
dump_table: Option<bool>Dump DBMS database table entries.
search: Option<bool>Search for database/table/column names.
os_shell: Option<bool>Prompt for an interactive OS shell.
sql_shell: Option<bool>Prompt for an interactive SQL shell.
file_read: Option<String>Read a file from the DBMS file system.
file_write: Option<String>Write a file to the DBMS file system.
file_dest: Option<String>Destination path for file write on the DBMS.
tor: Option<bool>Use Tor for anonymity.
tor_port: Option<i32>Tor proxy port.
tor_type: Option<String>Tor proxy type (HTTP, SOCKS4, SOCKS5).
crawl_depth: Option<i32>Crawl the website from the target URL to given depth.
scope: Option<String>Regex to filter target URLs during crawling.
forms: Option<bool>Parse and test forms on target pages.
second_url: Option<String>URL for second-order injection verification.
Implementations§
Source§impl SqlmapOptions
impl SqlmapOptions
Sourcepub fn builder() -> SqlmapOptionsBuilder
pub fn builder() -> SqlmapOptionsBuilder
Create a new options builder.
Examples found in repository?
13async fn main() -> Result<(), Box<dyn std::error::Error>> {
14 // ── 1. Check availability ────────────────────────────
15 if !SqlmapEngine::is_available() {
16 eprintln!("ERROR: sqlmapapi not found in PATH");
17 eprintln!("Quick fix:");
18 eprintln!(" conda env create -f environment.yml");
19 eprintln!(" conda activate sqlmap-env");
20 eprintln!(" # OR: ./setup.sh");
21 std::process::exit(1);
22 }
23
24 // ── 2. Boot the daemon ───────────────────────────────
25 println!("Booting sqlmapapi daemon on port 8775...");
26 let engine = SqlmapEngine::new(8775, true, None).await?;
27 println!("Daemon ready at {}", engine.api_url());
28
29 // ── 3. Configure scan with builder ───────────────────
30 let target = std::env::args()
31 .nth(1)
32 .unwrap_or_else(|| "http://testphp.vulnweb.com/listproducts.php?cat=1".to_string());
33
34 println!("Target: {target}");
35
36 let opts = SqlmapOptions::builder()
37 .url(&target)
38 .level(3)
39 .risk(2)
40 .batch(true)
41 .threads(4)
42 .random_agent(true)
43 .build();
44
45 // ── 4. Create and run task ───────────────────────────
46 let task = engine.create_task(&opts).await?;
47 println!("Task created: {}", task.task_id());
48
49 task.start().await?;
50 println!("Scan started, polling for completion...");
51
52 // ── 5. Monitor execution ─────────────────────────────
53 task.wait_for_completion(300).await?;
54 println!("Scan complete!");
55
56 // ── 6. Fetch and display logs ────────────────────────
57 match task.fetch_log().await {
58 Ok(log_resp) => {
59 if let Some(logs) = &log_resp.log {
60 println!("\n=== Scan Log ({} entries) ===", logs.len());
61 for entry in logs.iter().rev().take(10) {
62 println!(" [{}] {}: {}", entry.time, entry.level, entry.message);
63 }
64 if logs.len() > 10 {
65 println!(" ... and {} more entries", logs.len() - 10);
66 }
67 }
68 }
69 Err(err) => eprintln!("Could not fetch log: {err}"),
70 }
71
72 // ── 7. Fetch results ─────────────────────────────────
73 let data = task.fetch_data().await?;
74 let findings = data.findings();
75
76 println!("\n=== Results ===");
77 println!(" Findings: {}", findings.len());
78
79 if findings.is_empty() {
80 println!(" No SQL injection vulnerabilities detected.");
81 } else {
82 // ── 8. Multi-format output ───────────────────────
83 println!("\n{}", sqlmap_rs::types::format_findings(&findings, OutputFormat::Plain));
84
85 println!("=== JSON ===");
86 println!("{}", sqlmap_rs::types::format_findings(&findings, OutputFormat::JsonPretty));
87
88 println!("=== CSV ===");
89 println!("{}", sqlmap_rs::types::format_findings(&findings, OutputFormat::Csv));
90
91 println!("=== Markdown ===");
92 println!("{}", sqlmap_rs::types::format_findings(&findings, OutputFormat::Markdown));
93 }
94
95 // ── 9. Inspect configured options ────────────────────
96 match task.list_options().await {
97 Ok(options) => {
98 println!("\n=== Active Options ===");
99 println!("{}", serde_json::to_string_pretty(&options)?);
100 }
101 Err(err) => eprintln!("Could not fetch options: {err}"),
102 }
103
104 // Task is auto-deleted from daemon on drop.
105 // Engine daemon is auto-killed on drop.
106 println!("\nDone. Task and daemon will be cleaned up automatically.");
107
108 Ok(())
109}Trait Implementations§
Source§impl Clone for SqlmapOptions
impl Clone for SqlmapOptions
Source§fn clone(&self) -> SqlmapOptions
fn clone(&self) -> SqlmapOptions
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more