一、函数
1、version() MYsql版本
2、user() 数据库用户名
3、database() 数据库名
4、@@datadir 数据库路径
5、@@version_compile_os 操作系统版本
6、current_user() 当前用户名(可查看权限)
7、load_file() 读文件
8、into outfile() / into dumpfile 写文件
9、group_concat(str1,str2...) 连接一个组所有的字符串,并以逗号分隔每一条数据。
二、注释,可用# --+ url 中用%23
三、union操作符
用于合并两个或多个 SELECT 语句的结果集。请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的 列的顺序必须相同。
SQL UNION 语法:
SELECT column_name(s) FROM table_name1
UNION
SELECT column_name(s) FROM table_name2
注释:默认地,UNION 操作符选取不同的值。如果允许重复的值,请使用 UNION ALL。
SQL UNION ALL 语法
SELECT column_name(s) FROM table_name1
UNION ALL
SELECT column_name(s) FROM table_name2
另外,UNION 结果集中的列名总是等于 UNION 中第一个 SELECT 语句中的列名。
四、Mysql 有一个系统数据库 information_schema,
存储着所有的数据库的相关信息,一般的, 我们利用该表可以进行一次完整的注入。以下为一般的流程。
猜数据库
select schema_name from information_schema.schemata
猜某库的数据表
select table_name from information_schema.tables where table_schema=’xxxxx’
猜某表的所有列
Select column_name from information_schema.columns where table_name=’xxxxx’
获取某列的内容
Select *** from ****
上述知识参考用例:less1-less4
五、注释
1、单行注释,#后面直接加内容 ;单行注释,--后面必须要加空格 ;
2、多行注释,/**/中间可以跨行;
3、内联注入, 内联注释是MySQL数据库为了保持与其他数据库兼容,特意新添加的功能。
为了避免从MySQL中导出的SQL语句不能被其他数据库使用,它把一些 MySQL特有的语句放在 /*! ... */ 中,
这些语句在不兼容的数据库中使用时便 不会执行。而MySQL自身却能识别、执行。
六、order by 语句
1. ORDER BY 语句用于 根据指定的列对结果集进行排序。
2. ORDER BY 语句默认 按照升序对记录进行排序。
七、字符串连接函数
1、concat(str1,str2..)函数 直接连接
2、group_concat(str1,str2..)函数 使用逗号做为分隔符
3、concat_ws(sep,str1,str2..)函数 使用第一个参数做为分隔符
八、information_schema
例:
select schema_name from information_schema.schemata;
select table_name from information_schema.schemata where table_schema = ‘zzcms’;
select column_name from information_schema.columns where table_schema = ‘zzcms’ and ‘table_name’ = ‘zzcms_zx’;
九、SQL注入的分类
十、基于联合查询的注入模式,步骤
十一、判断是否存在注入与求闭合字符
1、id = 1’ 异常
id = 1 and 1 =1 -- + 正确
id = 1 and 1=2 -- + 错误
结论:极有可能存在数字型SQL注入
ps:单引号有个特殊的作用:命令分隔符
2、id = 1’ 异常
id = 1’ and 1 =1 -- + 正确
id = 1’ and 1=2 -- + 错误
结论:极有可能存在单引号字符型SQL注入
3、id = 1" 异常
id = 1” and 1 =1 -- + 正确
id = 1” and 1=2 -- + 错误
结论:极有可能存在双引号字符型SQL注入
4、id = 1) 异常
id = 1) and 1 =1 -- + 正确
id = 1) and 1=2 -- + 错误
结论:极有可能存在括号数字型SQL注入