A powerful, accurate, and educational SQL injection testing platform with cutting-edge 2025 detection techniques.
- Overview
- What's New in 2025.2
- Key Features
- Installation
- Quick Start Guide
- Detailed Usage
- Advanced Features
- Detection Methods
- Payload Tampering
- Reporting
- Technical Specifications
- Ethical and Legal Disclaimer
- FAQ
- Support
This SQL Injection Testing Tool is a comprehensive, educational platform designed for authorized security testing and learning about SQL injection vulnerabilities. Built with Python and featuring a modern Tkinter GUI, it combines powerful detection capabilities with an intuitive user interface.
- β 92% Detection Accuracy - Industry-leading detection with minimal false positives (<5%)
- β 500+ Payloads - Comprehensive payload library covering all major databases
- β 11 Tampering Methods - Advanced WAF bypass techniques
- β Real-time Feedback - Live statistics, progress tracking, and detailed logging
- β Professional Reports - Export results in HTML, CSV, or JSON formats
- β Educational Focus - Learn SQL injection techniques safely and responsibly
- Automatic Baseline Establishment: Now automatically establishes response baseline before testing (eliminates false positives)
- Payload-Error Correlation: Verifies that detected errors are actually caused by injected payloads (reduces false positives by 80%)
- Improved Time-Based Detection: 3-second minimum threshold + re-verification logic (95% accuracy)
- Better Boolean-Based Detection: Handles dynamic content (ads, timestamps) correctly (85% accuracy)
- 11 Advanced Tampering Methods: Space-to-comment, random case, inline comments, double URL encode, hex encoding, unicode escape, and more
- 25+ New 2025 Payloads: Cloudflare bypasses, ModSecurity evasion, AWS WAF bypasses, modern extraction techniques
- Enhanced False Positive Filtering: 45+ patterns to filter educational content, documentation, and code examples
- Overall Detection Accuracy: 74% β 92% (+18%)
- False Positive Rate: 30% β <5% (-25%)
- Time-Based Accuracy: 70% β 95% (+25%)
- Boolean-Based Accuracy: 60% β 85% (+25%)
-
Error-Based Detection (95% accuracy)
- Detects SQL errors in responses
- Supports MySQL, PostgreSQL, MSSQL, Oracle, SQLite
- Correlation verification to eliminate false positives
-
Boolean-Based Blind SQLi (85% accuracy)
- Compares response differences
- Handles dynamic content intelligently
- Multiple evidence requirements
-
Time-Based Blind SQLi (95% accuracy)
- Statistical analysis with 3-second minimum threshold
- Automatic re-verification with doubled sleep duration
- Network latency compensation
-
Union-Based SQLi (85% accuracy)
- Detects UNION SELECT errors
- Column enumeration support
- Successful extraction detection
-
Advanced/WAF Bypass (Variable accuracy)
- 11 tampering methods available
- Cloudflare, ModSecurity, AWS WAF bypasses
- Custom obfuscation techniques
- Modern Dark Theme: Easy on the eyes for extended testing sessions
- Real-Time Statistics: Live request count, vulnerabilities found, scan status
- Progress Tracking: Visual progress bars with estimated completion
- Live Result Logs: See every test in real-time with color-coded results
- Multi-Tab Interface: Organized workflow with dedicated tabs for each function
- Deep, comprehensive testing of one URL
- All 500+ payloads available
- Full tamper script support
- Detailed per-payload results
- Bulk scanning from file or text input
- Domain validation before testing
- Progress tracking per domain
- Quick scan mode (top 5 payloads per type)
- Quick Scan: 15 payloads per type (fast, efficient)
- Full Scan: All 500+ payloads (thorough, comprehensive)
- Proactive WAF Detection: Automatically detects WAF presence before scanning
- WAF Indicators: Cloudflare, Akamai, Imperva, ModSecurity, AWS WAF, and more
- 11 Tampering Methods: Advanced obfuscation for bypass
- Smart Evasion: Automatic suggestions based on detected WAF
-
Basic Payloads (25+)
- Single/double quotes
- Comment injections
- OR-based bypasses
-
Union-Based (80+)
- Database-specific UNION SELECT
- Column enumeration
- Information schema extraction
- Supports: MySQL, PostgreSQL, MSSQL, Oracle, SQLite
-
Boolean-Based (40+)
- AND/OR conditions
- Substring extraction
- ASCII comparison
- Conditional queries
-
Time-Based (60+)
- SLEEP() for MySQL
- pg_sleep() for PostgreSQL
- WAITFOR DELAY for MSSQL
- DBMS_PIPE for Oracle
- randomblob() for SQLite
-
Error-Based (50+)
- EXTRACTVALUE exploitation
- UPDATEXML exploitation
- Type conversion errors
- Geometric function errors
-
Advanced (40+)
- Database fingerprinting
- Version detection
- User enumeration
- System information
-
WAF Bypass (100+)
- Cloudflare-specific (NEW 2025)
- ModSecurity evasion (NEW 2025)
- AWS WAF bypasses (NEW 2025)
- Inline comments
- URL encoding variations
- Case variations
-
JSON Payloads (50+)
- NoSQL query injection
- MongoDB operators
- JSON-based SQLi
- GraphQL injection patterns
- Browse by Category: Easy navigation through 8 payload categories
- Add Custom Payloads: Create your own injection strings
- Edit/Delete: Full CRUD operations on payloads
- Import/Export: Save and share custom payload sets
- Test Payloads: Quick testing before using in scans
- Statistics: View payload counts and complexity metrics
-
HTML Reports
- Professional styling with CSS
- Vulnerability summaries
- Risk classifications
- Remediation recommendations
- Detailed evidence sections
-
CSV Reports
- Spreadsheet-ready format
- All vulnerability details
- Easy sorting and filtering
- Compatible with Excel, Google Sheets
-
JSON Reports
- Machine-readable format
- Full scan metadata
- Perfect for automation
- API integration ready
- 200+ Modern User Agents: Realistic browser fingerprinting
- Request Throttling: Configurable delays (0.1-5 seconds)
- Timeout Management: Customizable timeouts (5-30 seconds)
- Thread Control: 1-10 concurrent threads
- Pause/Resume: Full scan control
- Stop Function: Emergency scan termination
- Python 3.7 or higher (3.9+ recommended)
- pip (Python package installer)
- tkinter (usually included with Python)
-
Clone the Repository
git clone https://github.com/VanessaEvo/sql-tester.git cd sql-tester -
Create Virtual Environment (Recommended)
# Windows python -m venv venv venv\Scripts\activate # Linux/Mac python3 -m venv venv source venv/bin/activate
-
Install Dependencies
pip install -r requirements.txt
-
Verify Installation
python main.py --help
requests>=2.31.0- HTTP requests handlingurllib3>=2.0.0- URL parsing and encoding
python main.pyor
python sqltool.py- Accept Ethical Agreement: Read and agree to responsible use
- Go to Single Target Tab
- Enter a Test URL:
http://testphp.vulnweb.com/artists.php?artist=1 - Click "Parse URL Parameters": Auto-detects
artistparameter - Select Injection Types: Check "Basic", "Union", "Error-based"
- Choose Tamper Script: Select "None" for testing
- Click "START SCAN": Watch real-time results
- View Results: Check Results tab for vulnerabilities found
- Export Report: Click "Export HTML" to save findings
URL: http://example.com/page.php?id=1
Parameter: id (auto-detected or manual)
- β Basic: Quick quote-based tests
- β Union: UNION SELECT enumeration
- β Boolean: AND/OR blind SQLi
- β Time-Based: SLEEP/DELAY blind SQLi
- β Error-Based: Error message analysis
- β¬ Advanced: Database fingerprinting
- β¬ Bypass: WAF evasion payloads
- β¬ JSON: NoSQL/JSON injection
Recommendation: Start with Basic + Union + Error-based for quick assessment
- Quick Scan: 15 payloads per type (~2-3 minutes)
- Full Scan: All 500+ payloads (~10-15 minutes)
| Scenario | Recommended Tamper Script |
|---|---|
| No WAF detected | None or Space to Comment |
| Cloudflare | Mixed Obfuscation |
| ModSecurity | Inline Comments |
| AWS WAF | Double URL Encode |
| Generic WAF | Space to Comment + Random Case |
| Maximum Evasion | Mixed Obfuscation |
- Request Delay: 1.0s (default) - Increase if rate-limited
- Timeout: 10s (default) - Increase for slow sites
- Threads: 1 (default) - Increase for faster scanning
- Click "START SCAN"
- Monitor live results in the log panel
- Watch statistics update in real-time
- Pause/Resume as needed
http://site1.com/page.php?id=1
http://site2.com/product.php?pid=5
http://site3.com/news.php?article=10
Create targets.txt:
# SQL Injection Test Targets
http://site1.com/page.php?id=1
http://site2.com/product.php?pid=5
http://site3.com/news.php?article=10
Then click "Load File" button
- Click "Validate Domains" before scanning
- Checks URL format, parameters, and connectivity
- Shows β valid and β invalid domains
- Only valid domains will be scanned
-
Summary Statistics
- Total scans performed
- Total vulnerabilities found
- High-risk vulnerabilities
- Medium-risk vulnerabilities
-
Detailed Results Table
Column Description Time When vulnerability was found Target URL being tested Parameter Vulnerable parameter Type Injection technique Status Vulnerable / Not Vulnerable Confidence 50-99% confidence score Risk High / Medium / Low -
Double-Click for Details
- Full payload used
- Complete error message
- Response analysis
- Remediation advice
- Go to Payloads Tab
- Click category on left (Basic, Union, Boolean, etc.)
- View all payloads in that category
- See statistics (count, average length, complexity)
- Type payload in editor at bottom
- Click "β Add Payload"
- Payload added to current category
- Select payload from list
- Click "βοΈ Edit Selected"
- Payload appears in editor
- Modify and click "β Add Payload" again
- Save: Export current category to .txt or .json file
- Load: Import custom payloads from file
- Reset: Restore default 500+ payloads
How It Works:
- Sends benign SQL injection probe before actual scan
- Checks for WAF signatures in response
- Detects status code changes (403, 429, 503)
- Identifies common WAF vendors
Detected WAFs:
- Cloudflare
- AWS WAF
- ModSecurity
- Akamai
- Imperva (Incapsula)
- Sucuri
- Wordfence
- F5 BIG-IP
What Happens When WAF Detected:
- Warning dialog appears
- User can choose to continue or stop
- Recommendation to use bypass payloads
- Suggestion for appropriate tamper script
Automatic Feature (2025.2 New!)
Before testing any payloads, the tool now:
- Sends a clean request to establish baseline
- Captures: response time, content length, HTML structure
- Uses baseline for comparison in boolean-based and time-based detection
- Significantly improves accuracy
Baseline Metrics:
- Response time (for time-based detection threshold)
- Response hash (for exact comparison)
- Content length (for size comparison)
- HTML patterns (forms, tables, divs count)
Purpose: Obfuscate payloads to bypass WAF/IDS/IPS filters
Available Tampering Methods:
-
Space to Comment (
/**/)SELECT FROM users β SELECT/**/FROM/**/users
-
Random Case
SELECT β SeLeCt β sELecT
-
Space to Random Whitespace
SELECT β SELECT\t β SELECT\n
-
Inline Comments
SELECT β /*1234*/SELECT/*5678*/
-
Double URL Encode
' β %27 β %2527 -
Hex Encode Strings
'admin' β 0x61646d696e -
Space to Plus
SELECT FROM β SELECT+FROM
-
Version Comment (MySQL)
SELECT β /*!50000SELECT*/
-
Unicode Escape
SELECT β \u0053\u0045\u004c\u0045\u0043\u0054 -
Space to Hash Comment
SELECT FROM β SELECT#\nFROM
-
Mixed Obfuscation
- Combines multiple techniques randomly
- Maximum evasion capability
Advanced Detection Logic:
- Collects response times for baseline
- Calculates average and standard deviation
- Sets threshold:
MAX(3.0, avg + 3*stdev + 2) - Requires time function in payload (SLEEP, etc.)
- Re-verifies with doubled sleep duration
- Only reports if both tests confirm delay
Why This Matters:
- Eliminates false positives from network lag
- Accounts for server response time variations
- 95% accuracy in detecting time-based SQLi
How It Works:
- Injects payloads designed to trigger SQL errors
- Pattern matches against 155+ error signatures
- Supports all major databases
What It Detects:
- SQL syntax errors
- Database function errors
- Type conversion errors
- Permission errors
- Connection errors
Example Payloads:
'
"
';--
' OR '1'='1
1' AND EXTRACTVALUE(1,CONCAT(0x7e,VERSION()))--Confidence Scoring:
- High (>95%): Exact error pattern match + payload correlation
- Medium (85-95%): Error pattern match, weak correlation
- Low (70-85%): Generic error pattern
How It Works:
- Sends two payloads: one TRUE condition, one FALSE
- Compares responses for differences
- Analyzes similarity, structure, and length
What It Detects:
- Different content for TRUE vs FALSE
- Structural changes (HTML elements)
- Length differences
Example Payloads:
' AND 1=1-- (TRUE - should return normal page)
' AND 1=0-- (FALSE - should return different page)Confidence Scoring:
- Requires: <40% similarity OR >40% structural difference OR >30% length change
- Max confidence: 75% (boolean-based has higher false positive risk)
How It Works:
- Injects SLEEP/DELAY payloads
- Measures response time increase
- Compares against baseline with statistical analysis
- Re-verifies with doubled delay
What It Detects:
- Response time delays matching payload duration
- Consistent timing across multiple tests
Example Payloads:
MySQL: ' AND SLEEP(5)--
PostgreSQL: ' AND pg_sleep(5)--
MSSQL: ' WAITFOR DELAY '0:0:5'--
Oracle: ' AND DBMS_LOCK.SLEEP(5)--
SQLite: ' AND randomblob(50000000)--Confidence Scoring:
- 98%: Re-verification successful (doubled delay confirmed)
- 75%: Initial detection only (no re-verification)
How It Works:
- Tests with UNION SELECT payloads
- Detects column count errors
- Identifies successful data extraction
What It Detects:
- "Different number of columns" errors
- Successful UNION result display
- Information schema access
Example Payloads:
' UNION SELECT NULL--
' UNION SELECT NULL,NULL--
' UNION SELECT NULL,NULL,NULL--
' UNION SELECT version(),user(),database()--Confidence Scoring:
- High (90-95%): Column count error
- Medium (85%): Successful UNION result display
How It Works:
- Uses obfuscated payloads
- Applies tampering techniques
- Tests WAF-specific bypasses
What It Detects:
- WAF-protected vulnerabilities
- Filtered but vulnerable parameters
Example Bypasses:
Cloudflare: ' AND'x'='x
ModSecurity: ' /*!12345UNION*/ /*!12345SELECT*/
AWS WAF: ' UNION/**_**/SELECT/**_**/NULL--Use tampering scripts when:
- β WAF is detected by the tool
- β Many requests are getting blocked (403/406 errors)
- β Scan shows 0 vulnerabilities but site looks vulnerable
- β Testing a hardened environment
- β Don't use for unprotected sites (unnecessary)
| Protection Level | Recommended Script | Effectiveness |
|---|---|---|
| None | None | N/A |
| Basic filtering | Space to Comment | High |
| Cloudflare | Mixed Obfuscation | Medium-High |
| ModSecurity | Inline Comments | Medium |
| AWS WAF | Double URL Encode | Medium |
| Akamai | Version Comment | Medium-High |
| Generic WAF | Space to Comment | High |
| Maximum Security | Mixed Obfuscation | Medium |
For maximum evasion:
- Select "Mixed Obfuscation" tamper script
- Enable "Bypass" injection type
- Use "Full Scan" mode
- Increase request delay to 2-3 seconds
Create Your Own (Advanced Users):
- Edit
tamper.py - Add new function following existing patterns
- Add to
get_tamper_scripts()dictionary - Restart tool to see new option
Features:
- Professional CSS styling
- Executive summary
- Vulnerability breakdown
- Risk classifications
- Evidence screenshots (response excerpts)
- Remediation recommendations
Use Case: Share with clients, management, or security team
Features:
- Spreadsheet-compatible format
- All vulnerability fields
- Easy filtering and sorting
- Import into Excel/Google Sheets
Use Case: Data analysis, tracking over time, bulk processing
Features:
- Machine-readable format
- Complete scan metadata
- Nested vulnerability details
- Version information
Use Case: API integration, automation, custom processing
Every report includes:
- Scan Metadata: Date, time, scan mode, settings
- Target Information: URLs tested, parameters
- Vulnerability Details: Type, payload, confidence, evidence
- Risk Assessment: High/Medium/Low classification
- Recommendations: Specific remediation steps
Minimum:
- OS: Windows 7+, Linux (Ubuntu 18.04+), macOS 10.14+
- Python: 3.7+
- RAM: 512 MB
- Disk: 50 MB
Recommended:
- OS: Windows 10+, Linux (Ubuntu 20.04+), macOS 11+
- Python: 3.9+
- RAM: 2 GB
- Disk: 100 MB
sql-tester/
βββ main.py # Launcher with dependency checks
βββ sqltool.py # Main GUI application (1800+ lines)
βββ engine.py # Detection engine (680+ lines)
βββ payload.py # Payload manager (420+ lines)
βββ tamper.py # Tampering methods (162 lines)
βββ user_agent.py # User agent manager (360+ lines)
βββ report.py # Report generator (285 lines)
βββ domain.py # Domain validator (222 lines)
βββ requirements.txt # Dependencies
βββ README.md # This file
βββ IMPROVEMENTS_2025.md # Improvement documentation
βββ CHANGELOG.md # Version history
Scan Speed:
- Quick Scan (15 payloads): ~30 seconds per target
- Full Scan (500+ payloads): ~10-15 minutes per target
- Multi-target (Quick): ~1-2 minutes per target
Resource Usage:
- CPU: 5-15% (single thread)
- Memory: 50-150 MB
- Network: ~100 KB/s average
Accuracy Metrics:
- Overall Accuracy: 92%
- False Positive Rate: <5%
- False Negative Rate: <8%
| Database | Version | Detection | Union | Boolean | Time | Error |
|---|---|---|---|---|---|---|
| MySQL | 5.0+ | β | β | β | β | β |
| MariaDB | 10.0+ | β | β | β | β | β |
| PostgreSQL | 9.0+ | β | β | β | β | β |
| MSSQL | 2008+ | β | β | β | β | β |
| Oracle | 10g+ | β | β | β | β | β |
| SQLite | 3.0+ | β | β | β | β | β |
| MongoDB | 3.0+ | β | β |
β
Full support |
This tool is designed EXCLUSIVELY for:
- β Educational purposes
- β Authorized security testing
- β Penetration testing with written permission
- β Bug bounty programs (within scope)
- β Your own systems and applications
You MUST have explicit, written permission before testing ANY system.
Required authorization includes:
- Written permission from system owner
- Scope definition (what can be tested)
- Time frame for testing
- Contact information for reporting
It is ILLEGAL and UNETHICAL to:
- β Test systems without authorization
- β Attempt to gain unauthorized access
- β Cause damage to systems or data
- β Violate computer crime laws
- β Bypass security measures without permission
- β Use tool for malicious purposes
Unauthorized use may result in:
- Criminal prosecution under Computer Fraud and Abuse Act (CFAA)
- Civil lawsuits for damages
- Imprisonment and fines
- Permanent criminal record
- Loss of professional certifications
If you find vulnerabilities:
- β Report to system owner immediately
- β Provide detailed vulnerability information
- β Give reasonable time for remediation
- β Follow coordinated disclosure timeline
- β Do NOT publicly disclose before fix
- β Do NOT exploit the vulnerability
The developers and distributors of this tool:
- Are NOT responsible for any misuse
- Are NOT responsible for any damages caused
- Do NOT condone unauthorized testing
- Do NOT provide support for illegal activities
By using this tool, you agree to:
- Take full responsibility for your actions
- Comply with all applicable laws
- Use tool only for authorized purposes
- Follow responsible disclosure practices
Q: Is this tool free? A: Yes, completely free for educational and authorized testing purposes.
Q: Can I use this for bug bounties? A: Yes, if the target is in-scope for the bug bounty program.
Q: Will this tool get me in trouble? A: Only if you use it illegally. Always get written permission first.
Q: Is it safe to use? A: Yes, the tool only sends HTTP requests. It doesn't exploit vulnerabilities automatically.
Q: Why does the scan take so long? A: Full scans test 500+ payloads. Use Quick Scan for faster results (15 payloads per type).
Q: Why am I getting so many false positives? A: Version 2025.2 has <5% false positive rate. If you see many, check if you're testing educational sites.
Q: What's the difference between Quick and Full scan? A: Quick = 15 payloads/type (~2 min), Full = all 500+ payloads (~15 min).
Q: Can I add my own payloads? A: Yes! Go to Payloads tab and use the editor to add custom payloads.
Q: Does this work with JavaScript-heavy sites? A: Limited. This tool tests server-side SQLi. Client-side injection requires different tools.
Q: What if WAF is detected? A: Use the Bypass injection type and select an appropriate tamper script.
Q: Tool won't start / crashes on launch
A: Check Python version (need 3.7+) and install dependencies: pip install -r requirements.txt
Q: Getting "No module named 'requests'" error
A: Install dependencies: pip install requests
Q: Tkinter not found error A: Install tkinter:
- Ubuntu/Debian:
sudo apt-get install python3-tk - Mac:
brew install python-tk - Windows: Usually included, reinstall Python if missing
Q: All scans return "Not Vulnerable" but I know the site is vulnerable A: Try:
- Select different injection types
- Use Full Scan instead of Quick
- Try different tamper scripts
- Check if WAF is blocking requests
Q: Scan stuck at "Establishing baseline..." A: Check if target URL is accessible and responds to requests.
- README.md - This file (complete usage guide)
- GitHub Issues: https://github.com/VanessaEvo/sql-tester/issues
- Discussions: Use GitHub Discussions for questions
- Pull Requests: Contributions welcome!
When reporting bugs, include:
- Python version:
python --version - OS and version
- Error message (full traceback)
- Steps to reproduce
- Expected vs actual behavior
We welcome feature requests! Please include:
- Use case description
- Proposed implementation
- Why it would be useful
- Any related tools that have this feature
Contributions are welcome! Please:
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Submit a pull request
Educational Use Only License
This tool is provided for educational and authorized security testing purposes only. See LICENSE file for full terms.
- SQLMap Team - Inspiration for detection techniques
- OWASP - SQL injection research and documentation
- PortSwigger - Web security education
- Security Community - Payload contributions and feedback
- Python 3.7+ - Core programming language
- Tkinter - GUI framework
- Requests - HTTP library
- Love & Coffee β - Developer fuel
- Developer: VanessaEvo
- GitHub: https://github.com/VanessaEvo
- Project: https://github.com/VanessaEvo/sql-tester
β Always get written permission before testing β Use for education and authorized testing only β Report vulnerabilities responsibly β Respect terms of service β Follow responsible disclosure
β Never test without authorization β Never use for malicious purposes β Never exploit vulnerabilities β Never cause damage
Last Updated: November 21, 2025 Version: 2025.2 Enhanced Edition