赞
踩
目录
如果刚开始接触sql注入,那么sqli-labs这个靶场会很适合你,里面包含了很多的情景,以及我们在sql注入的时候遇到的阻碍。本章将1-65关重点关卡进行详细讲解。代码基本上很全。如果靶场练习完了可以看我这篇SQL注入总结会更好掌握。?SQL注入非常详细总结_的博客-CSDN博客_sql注入数据包
在练习靶场前我们需要了解以下mysql数据库结构,mysql数据库5.0以上版本有一个自带的数据库叫做information_schema,该数据库下面有两个表一个是tables和columns。tables这个表的table_name字段下面是所有数据库存在的表名。table_schema字段下是所有表名对应的数据库名。columns这个表的colum_name字段下是所有数据库存在的字段名。columns_schema字段下是所有表名对应的数据库。了解这些对于我们之后去查询数据有很大帮助。我们前面机关讲解比较详细后面就比较简单了。
**1.**提示你输入数字值的ID作为参数,我们输入id=1
**2.**通过数字值不同返回的内容也不同,所以我们输入的内容是带入到数据库里面查询了。
**3.**接下来我们判断sql语句是否是拼接,且是字符型还是数字型。
**4.**可以根据结果指定是字符型且存在sql注入漏洞。因为该页面存在回显,所以我们可以使用联合查询。联合查询原理简单说一下,联合查询就是两个sql语句一起查询,两张表具有相同的列数,且字段名是一样的。
**第一步:**首先知道表格有几列,如果报错就是超过列数,如果显示正常就是没有超出列数。
?id=1'order by 3 --+
**第二步:**爆出显示位,就是看看表格里面那一列是在页面显示的。可以看到是第二列和第三列里面的数据是显示在页面的。
?id=-1'union select 1,2,3--+
**第三步:**获取当前数据名和版本号,这个就涉及mysql数据库的一些函数,记得就行。通过结果知道当前数据看是security,版本是5.7.26。
?id=-1'union select 1,database(),version()--+
第四步: 爆表,information_schema.tables表示该数据库下的tables表,点表示下一级。where后面是条件,group_concat()是将查询到结果连接起来。如果不用group_concat查询到的只有user。该语句的意思是查询information_schema数据库下的tables表里面且table_schema字段内容是security的所有table_name的内容。也就是下面表格user和passwd。
?id=-1'union select 1,2,group_concat(table_name) from info
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。