Designing the Oracle
Theory
An oracle is a function that:
Takes a SQL query
Returns True or False based on evaluation
How It Works
Since we know maria exists (returns taken), we can test queries:
SELECT Username FROM Users WHERE Username = 'maria' AND q-- -'Query Result
Response
Meaning
q = True
taken
Query evaluated as TRUE
q = False
available
Query evaluated as FALSE
Testing the Oracle
True Condition
Payload: maria' AND 1=1-- -
SELECT Username FROM Users WHERE Username = 'maria' AND 1=1-- -'Response: status: taken β
(True)
False Condition
Payload: maria' AND 1=0-- -
Response: status: available β
(False)
Important Note
β οΈ Must use an existing username (like
maria)If using non-existent username, result is always
availableregardless of query truth value.
Python Oracle Script
Using the Oracle
Count Rows in Table
Base Query:
Enumeration Script
Output
Oracle Query Examples
Counting
String Comparison
Existence Checks
Oracle Pattern
Optimization Tips
Binary Search for Numbers
Instead of linear search (0, 1, 2, 3...), use binary search:
Parallel Requests
Next Steps
Extracting Data - Character-by-character extraction
Binary Search Optimization - Faster extraction
Quick Reference
Payload Template
URL Encoding
Common Assertions
Last updated