Mysql注入的注入类型(2)
加解密注入
- 数据包当中的cookie内容经过了加密,可以将sql语句进行加密,然后注入
- 以sqli-labs-less21为例
- 在用户名密码栏当中输入admin
- 会回显我们的cookie数据
- 通过抓包工具可以看到cookie数据内容被加密了,加密方式为base64编码
- 解密得到admin原文,我们在后面加个单引号测试是否存在漏洞
- 可以看出,我们可以在后面加上单引号和后括号进行注入
- 将报错注入到cookie当中,然后进行加密
- 可以看到注入成功了
二次注入
- 二次注入是指已存储(数据库、文件)的用户输入被读取后再次进入到 SQL 查询语句中导致的注入。
- 二次注入是sql注入的一种,但是比普通sql注入利用更加困难,利用门槛更高。普通注入数据直接进入到 SQL 查询中,而二次注入则是输入数据经处理后存储,取出后,再次进入到 SQL 查询。
原理
- 在第一次进行数据库插入数据的时候,使用了
get_magic_quotes_gpc
对其中的特殊字符进行了转义,但是存入数据库时还是原来的数据,数据中带有'
或者#
,然后下次使用再拼凑sql语句中,形成二次注入
实例
- 以sqli-labs-less24为例
- 我们没有用户名和密码,所有我们通过注册账户的方式,将干扰符号注入进去
- 我们猜测存在admin用户,所有我们注册admin’#
- 通过查询可以知道我们的账户注册成功了
- 成功登录之后,进入到更改密码的界面,我们直接将密码改为
111111
- 此时我们发现,我们将
admin
的密码改了,说明二次注入成功 - 原因时代码在执行的过程中,将
'#
进行了转义,没有对注册造成干扰,但是在第二次调用的时候没有进行过滤,造成二次注入。
堆叠注入
原理
- 堆叠查询可以执行多条语句,多条语句之间以分号隔开。
- 堆叠注入就是利用在一条查询语句结束之后,在语句末尾加入分号之后再插入恶意的SQL语句,就可以达到攻击者的意图。
实例
- 以sqli-labs-less38为例
- 在语句中加个分号
;
,在后面加入需要注入的恶意语句 ?id=1'; insert into users(id,username,password) values (38,'less38','mima')--+
- 用于在数据库当中插入自定义的用户名和密码
- 可以看到已经注入成功了
评论