加解密注入

  • 数据包当中的cookie内容经过了加密,可以将sql语句进行加密,然后注入
  • 以sqli-labs-less21为例
    image.png
  • 在用户名密码栏当中输入admin
    image.png
  • 会回显我们的cookie数据
    image.png
  • 通过抓包工具可以看到cookie数据内容被加密了,加密方式为base64编码
    image.png
  • 解密得到admin原文,我们在后面加个单引号测试是否存在漏洞
    image.png
    image.png
  • 可以看出,我们可以在后面加上单引号和后括号进行注入
    image.png
  • 将报错注入到cookie当中,然后进行加密
    image.png
  • 可以看到注入成功了

二次注入

  • 二次注入是指已存储(数据库、文件)的用户输入被读取后再次进入到 SQL 查询语句中导致的注入。
  • 二次注入是sql注入的一种,但是比普通sql注入利用更加困难,利用门槛更高。普通注入数据直接进入到 SQL 查询中,而二次注入则是输入数据经处理后存储,取出后,再次进入到 SQL 查询。

原理

  • 在第一次进行数据库插入数据的时候,使用了get_magic_quotes_gpc对其中的特殊字符进行了转义,但是存入数据库时还是原来的数据,数据中带有'或者#,然后下次使用再拼凑sql语句中,形成二次注入

实例

  • 以sqli-labs-less24为例
    image.png
  • 我们没有用户名和密码,所有我们通过注册账户的方式,将干扰符号注入进去
  • 我们猜测存在admin用户,所有我们注册admin’#
    image.png
    image.png
  • 通过查询可以知道我们的账户注册成功了
    image.png
  • 成功登录之后,进入到更改密码的界面,我们直接将密码改为111111
    image.png
  • 此时我们发现,我们将admin的密码改了,说明二次注入成功
  • 原因时代码在执行的过程中,将'#进行了转义,没有对注册造成干扰,但是在第二次调用的时候没有进行过滤,造成二次注入。

堆叠注入

原理

  • 堆叠查询可以执行多条语句,多条语句之间以分号隔开。
  • 堆叠注入就是利用在一条查询语句结束之后,在语句末尾加入分号之后再插入恶意的SQL语句,就可以达到攻击者的意图。

实例

  • 以sqli-labs-less38为例
  • 在语句中加个分号;,在后面加入需要注入的恶意语句
  • ?id=1'; insert into users(id,username,password) values (38,'less38','mima')--+
    image.png
  • 用于在数据库当中插入自定义的用户名和密码
    image.png
  • 可以看到已经注入成功了