pikachu SQL部分(上)

 

第四章 SQL注入

 

 

1.SQL注入基本概念和原理

 

    核心思想就是:大胆猜测后台是以什么样的方式去处理的,通过类型来构造合适的闭合。

 

pikachu SQL部分(上)

 

 pikachu SQL部分(上)

 

 pikachu SQL部分(上)

 

 

2.从一个数字型注入认识sql注入漏洞

  场景演示:

pikachu SQL部分(上)

 

 

  随便选一个测试一下

pikachu SQL部分(上)

 

 pikachu SQL部分(上)

 

   可以看出这是post类型的,因为它并没有在url里传参

 

  逻辑:

  我们提交了一个id,后台返回来一个名称和邮箱。用户的所有信息是存放在数据库里的,我们输入了id,后台应该做了相应的查询。

  select 字段1,字段2  from 表名 where id=1;

 

  打开命令行进行操作,查看一下

pikachu SQL部分(上)

 

 pikachu SQL部分(上)

 

 pikachu SQL部分(上)

 

   因为1=1永远为真,那么or 1=1会把表里的所有数据全部遍历出来

 

  我们通过抓包来看一下(post请求一般使用抓包的形式来做测试)

  发送到repeater做重放的测试

pikachu SQL部分(上)

 

 pikachu SQL部分(上)

 

   我们可以看到,输入or 1=1后,这个页面上所有用户的信息都显示出来。

  这个地方是有注入点的,是可以通过一些合法的sql语句进行注入的。这是最简单的注入。

 

  查看后端的代码

pikachu SQL部分(上)

 

 

 

3.字符型注入

  场景演示

pikachu SQL部分(上)

 

 

  测试一下功能

pikachu SQL部分(上)

 

 pikachu SQL部分(上)

 

   输入存在的用户出现上面的,不存在的就是下面的样子

 

  逻辑:

pikachu SQL部分(上)

 

   因为输入的这个名字相当于一个字符串,字符串是需要用单引号进行包裹的。见到单引号,我们可以想到用单引号进行闭合来实现我们的注入。

  先输入一个名字,加一个单引号把前面的单引号闭合掉,再输入or 1=1 ,因为后面也有单引号,我们可以添加一个注释符把单引号注释掉。

 

  把构造好的语句输入

pikachu SQL部分(上)

 

 pikachu SQL部分(上)

 

   出现所有的信息

  这个是get型的,所以会在url里面进行传参。(只不过会进行编码处理)

pikachu SQL部分(上)

 

 

  看一下后端的代码

pikachu SQL部分(上)

 

 

 

4.搜索型及xxsql注入

pikachu SQL部分(上)

 

 pikachu SQL部分(上)

 

 

  搜索型场景演示:

pikachu SQL部分(上)

 

 

  测试一下功能

pikachu SQL部分(上)

 

 pikachu SQL部分(上)

 

   输入一个字符,查询出相关信息,应该是使用了数据库的搜索功能,匹配型查询(like),模糊匹配

pikachu SQL部分(上)

 

 

  查看一下源代码

pikachu SQL部分(上)

 

 

 pikachu SQL部分(上)

 

   我们可以看到,它与数字型和字符型的不同点在于,拼接变量进去的时候,是被单引号和百分号包裹的。我们同样可以通过这个来构造闭合。

 

 

  构造一下

pikachu SQL部分(上)

 

 

  输入一下

pikachu SQL部分(上)

 

 pikachu SQL部分(上)

 

   出现所有信息

 

 

  xx型注入场景演示

pikachu SQL部分(上)

 

 

  查看一下源代码

pikachu SQL部分(上)

 

   我们可以看出,这个拼接处使用单括号和单引号进行包裹的。

 

  我们的拼接方式多种多样,比如单引号、双引号、括号或者组合形式出现

 

  构造一下

pikachu SQL部分(上)

 

 pikachu SQL部分(上)

 

 

  输入一下

pikachu SQL部分(上)

 

 pikachu SQL部分(上)

 

   出现所有信息

 

 

  结合字符型注入来介绍一些简单的判断机制

  可以用or 1=1;and 1=1等来进行判断

  直接输入单引号会出现页面的报错,通常出现了报错就说明有注入点(报错机制),我们就可以进行注入拼接。

 

pikachu SQL部分(上)

 

 

 

5.union注入

pikachu SQL部分(上)

 

 pikachu SQL部分(上)

 

 

  一些基础函数

pikachu SQL部分(上)

 

 

  如何猜测字段数(因为union后的字段数需要和前面的主查询一样)

  order by语句

pikachu SQL部分(上)

 

   说明只有两列(只有两个字段)

 

pikachu SQL部分(上)

 

 pikachu SQL部分(上)

 

 pikachu SQL部分(上)

 

 pikachu SQL部分(上)

 

   正常执行,没有报错

 

pikachu SQL部分(上)

 

 pikachu SQL部分(上)

 

   可以随意去查询一些东西

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

pikachu SQL部分(上)

上一篇:Dedecms中{dede:type}标签支持调用父级栏目名称


下一篇:MySQL的复制原理及配置