pikachu SQL部分(上)

第四章 SQL注入

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

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

 

 

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

  场景演示:

  随便选一个测试一下

 

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

  逻辑:

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

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

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

 

 

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

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

  发送到repeater做重放的测试

 

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

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

  查看后端的代码

3.字符型注入

  场景演示

  测试一下功能

 

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

  逻辑:

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

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

  把构造好的语句输入

 

   出现所有的信息

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

  看一下后端的代码

4.搜索型及xxsql注入

 

  搜索型场景演示:

  测试一下功能

 

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

  查看一下源代码

 

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

  构造一下

  输入一下

 

   出现所有信息

  xx型注入场景演示

  查看一下源代码

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

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

  构造一下

 

  输入一下

 

   出现所有信息

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

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

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

5.union注入

 

  一些基础函数

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

  order by语句

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

 

 

 

   正常执行,没有报错

 

   可以随意去查询一些东西

 

原文地址:https://www.cnblogs.com/zhaihuijie/p/12640085.html