Identification
Information Gathering
Enumerate Tables
Enumerate Columns
sql column shows full CREATE TABLE statement with all column names and types.
Dump Data
String Functions
| Function | Description |
|---|---|
|| | Concatenate |
SUBSTR(str,pos,len) | Substring |
LENGTH(str) | String length |
UNICODE(char) | Unicode code point |
CHAR(n) | Char from code point |
UPPER(str) | Uppercase |
LOWER(str) | Lowercase |
REPLACE(str,old,new) | Replace |
TRIM(str) | Trim whitespace |
HEX(str) | Hex encode |
ZEROBLOB(n) | N zero bytes |
GROUP_CONCAT(col) | Aggregate concat |
GROUP_CONCAT(col,sep) | Concat with separator |
Conditional
Time Delay
SQLite has no sleep function. Alternatives:Error-Based
SQLite error messages are less verbose. Limited error-based:UNION
File Write — ATTACH DATABASE
Boolean Blind
Stacked Queries
Supported depending on driver:No information_schema
SQLite usessqlite_master instead:
| Query | Purpose |
|---|---|
SELECT name FROM sqlite_master WHERE type='table' | List tables |
SELECT sql FROM sqlite_master WHERE name='tbl' | Show CREATE statement |
PRAGMA table_info(tbl) | Column info |
PRAGMA database_list | Attached databases |
Type System
SQLite uses dynamic typing — any column accepts any type. No strict type enforcement. This means:- CAST errors are less common
- Type-based detection may not work
- No need to match column types in UNION