Testing for SQL
How SQL Injection Works
Vulnerable PHP Code Example
$username = $_POST['username'];
$query = "SELECT * FROM logins WHERE username='$username'";SELECT * FROM logins WHERE username='admin'-- -'SQLi Discovery
Escape Context Characters
[Nothing]
'
"
`
')
")
`)
'))
"))
`))Test Payloads
Payload
URL Encoded
SQL Comments (End Query Early)
DBMS
Comment Syntax
Types of SQL Injection
Type
Description
Authentication Bypass
Common Payloads
How OR Injection Works
OR Injection WorksUNION Injection
Step 1: Detect Number of Columns
Method A: ORDER BY
Method B: UNION SELECT
Step 2: Find Visible Columns
Step 3: Extract Data
Database Enumeration
MySQL Fingerprinting
Payload
Expected Output
Enumerate Databases
Current Database
Enumerate Tables
Enumerate Columns
Dump Data
MySQL Useful Functions & Variables
File Read (MySQL)
Check FILE Privilege
Read Files with LOAD_FILE()
File Write (MySQL)
Check secure_file_priv
Write Files with INTO OUTFILE
Write Web Shell
Web Root Paths
Server
Common Paths
Blind SQL Injection
Boolean-Based
Time-Based
Second-Order SQL Injection
WAF Bypass Techniques
Case Manipulation
Comment Injection
URL Encoding
Double URL Encoding
Whitespace Alternatives
Operator Alternatives
UNION SELECT Bypass Strings
Hex Spacing for Gaps
MSSQL Specific
Version
Current User
Databases
Tables
Enable xp_cmdshell (RCE)
MSSQL Blind Exploitation
PostgreSQL Specific
Version
Current User
Databases
Tables
File Read
Command Execution
Oracle Specific
Version
Current User
Tables
Columns
Remote MySQL Connection
After Connection
Change WordPress Password
Output Format Fix
SQLMap
Resources
Last updated