目录
mysql数据结构
1.sqli-labs第一关
1.1判断是否存在sql注入
2.2 联合注入
2.sqli-labs第二关
3.sqli-labs第三关
?4.sqli-labs第四关
5.sqli-labs第五关
6.sqli-labs第六关
7.sqli-labs第七关
8.sqli-labs第八关
9.sqli-labs第九关
10.sqli-labs第十关
11.sqli-labs第十一关
12.sqli-labs第十二关
13.sqli-labs第十三关
14.sqli-labs第十四关
15.sqli-labs第十五关
?16.sqli-labs第十六关
17.sqli-labs第十七关
18.sqli-labs第十八关
19.sqli-labs第十九关
20.sqli-labs第二十关
?21.sqli-labs第二十一关
22.sqli-labs第二十二关
23.sqli-labs第二十三关
24.sqli-labs第二十四关
25.sqli-labs第二十五关
26.sqli-labs第二十六关
26-a.sqli-labs第二十六-a关
27.sqli-labs第二十七关
27-a.sqli-labs第二十七-a关
28.sqli-labs第二十八关
28-a.sqli-labs第二十八-A关
29.sqli-labs第二十九关
30.sqli-labs第三十关
31.sqli-labs第三十一关
32.sqli-labs第三十二关
33.sqli-labs第三十三关
34.sqli-labs第三十四关
35.sqli-labs第三十五关
36.sqli-labs第三十六关
37.sqli-labs第三十七关
38.sqli-labs第三十八关
39.sqli-labs第三十九关
40.sqli-labs第四十关
41.sqli-labs第四十一关
42.sqli-labs第四十二关
43.sqli-labs第四十三关
44.sqli-labs第四十四关
45.sqli-labs第四十五关
46.sqli-labs第四十六关
47.sqli-labs第四十七关
48.sqli-labs第四十八关
49.sqli-labs第四十九关
50.sqli-labs第五十关
51.sqli-labs第五十一关
52.sqli-labs第五十二关
53.sqli-labs第五十三关
54.sqli-labs第五十四关
55.sqli-labs第五十五关
56.sqli-labs第五十六关
57.sqli-labs第五十七关
?58.sqli-labs第五十八关
59.sqli-labs第五十九关
60.sqli-labs第六十关
61.sqli-labs第六十一关
62.sqli-labs第六十二关
63.sqli-labs第六十三关
?64.sqli-labs第六十四关
65.sqli-labs第六十五关
如果刚开始接触sql注入,那么sqli-labs这个靶场会很适合你,里面包含了很多的情景,以及我们在sql注入的时候遇到的阻碍。本章将1-65关重点关卡进行详细讲解。代码基本上很全。如果靶场练习完了可以看我这篇SQL注入总结会更好掌握。?SQL注入非常详细总结_的博客-CSDN博客_sql注入数据包
mysql数据结构
在练习靶场前我们需要了解以下mysql数据库结构,mysql数据库5.0以上版本有一个自带的数据库叫做information_schema,该数据库下面有两个表一个是tables和columns。tables这个表的table_name字段下面是所有数据库存在的表名。table_schema字段下是所有表名对应的数据库名。columns这个表的colum_name字段下是所有数据库存在的字段名。columns_schema字段下是所有表名对应的数据库。了解这些对于我们之后去查询数据有很大帮助。我们前面机关讲解比较详细后面就比较简单了。
1.sqli-labs第一关
1.1判断是否存在sql注入
**1.**提示你输入数字值的ID作为参数,我们输入id=1
**2.**通过数字值不同返回的内容也不同,所以我们输入的内容是带入到数据库里面查询了。
**3.**接下来我们判断sql语句是否是拼接,且是字符型还是数字型。
**4.**可以根据结果指定是字符型且存在sql注入漏洞。因为该页面存在回显,所以我们可以使用联合查询。联合查询原理简单说一下,联合查询就是两个sql语句一起查询,两张表具有相同的列数,且字段名是一样的。
2.2 联合注入
**第一步:**首先知道表格有几列,如果报错就是超过列数,如果显示正常就是没有超出列数。
?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