Designing Time Oracle

Theory

No results or error messages displayed - only timing differences.

How It Works

Make server wait different amounts of time based on query outcome:

SELECT ... FROM ... WHERE ... = 'Mozilla...'; IF (q) WAITFOR DELAY '0:0:5'--'
Query Result
Server Behavior

q = True

Wait 5 seconds, then respond

q = False

Respond immediately


Testing the Oracle

False Query (1=0)

GET / HTTP/1.1
Host: <TARGET>
User-Agent: ';IF(1=0) WAITFOR DELAY '0:0:5'--

Response time: ~9ms (immediate) βœ…

True Query (1=1)

Response time: ~5,071ms (delayed) βœ…


Python Oracle Script


Choosing Delay Value

Trade-offs

Delay
Pros
Cons

1 second

Fast extraction

False positives from slow network

3 seconds

Good balance

Moderate extraction time

5 seconds

Very accurate

Slow extraction

10 seconds

Extremely accurate

Very slow

Recommendation

Network Considerations

  • Slow VPN: Use higher delay (5-10s)

  • Fast local: Can use lower delay (1-2s)

  • Unstable connection: Use higher delay + multiple retries


Example: Extract Database Name

Query Base

Extraction Script

Output


Time Oracle vs Boolean Oracle

Aspect
Boolean Oracle
Time Oracle

Detection

Response content/length

Response time

Speed

Faster

Slower

Accuracy

More reliable

Network dependent

Visibility

Needs visible difference

Works blindly


Common Patterns

Conditional Delay

Payload Templates


Improving Reliability

Multiple Checks

Threshold Buffer


Quick Reference

Oracle Template

Verification

ASCII Ranges

Range
Characters

48-57

0-9 (digits)

65-90

A-Z (uppercase)

97-122

a-z (lowercase)

32-126

All printable


Next Steps

Last updated