SQL 注入漏洞(十)二次注入

一、二次注入

二次注入漏洞是一种在 Web 应用程序中广泛存在的安全漏洞形式。相对于一次注入漏洞而言,二次注入漏洞更难以被发现,但是它却具有
与一次注入攻击漏洞相同的攻击威力。

1、二次注入原理

在第一次进行数据库插入数据的时候,仅仅只是使用了addslashes 或者是借助get_magic_quotes_gpc 对其中的特殊字符进行了转义,
但是 addslashes 有一个特点就是虽然参数在过滤后会添加 “\” 进行转义,但是“\”并不会插入到数据库中,在写入数据库的时候还是
保留了原来的数据。
在将数据存入到了数据库中之后,开发者就认为数据是可信的。在下一次进行需要进行查询的时候,直接从数据库中取出了脏数据,没有进行
下一步的检验和处理,这样就会造成 SQL 的二次注入。
比如在第一次插入数据的时候,数据中带有单引号,直接插入到了数据库中;然后在下一次使用中在拼凑的过程中,就形成了二次注入。
二次注入原理,主要分为两步:
第一步:插入恶意数据库
第一次进行数据库插入数据的时候,仅仅对其中的特殊字符进行转义,在写入数据库的时候还保留了原来的数据,但是,数据本身包含恶意
内容。

第二步:引用恶意数据
在将数据存入到数据库中后,开发者就认为数据是可信的。在下一次需要进行查询的时候,直接从数据库中取出了恶意数据,没有进行进一
步的校验和处理。
这样就造成sql二次注入。

在这里插入图片描述

二、黑盒环境下进行二次注入

先确定测试的网站是否进行过滤,一般情况下网站都会对输入的参数进行过滤,然后寻找可能会带入恶意数据二次使用的地方。
例如用户注册->修改密码、邮箱注册->修改密码、文章添加->文章编辑。找一切存在二次使用的功能点。二次注入测试 SQL 注入,二次注入
多数是字符型注入,所以要注意闭合问题。
现在注册用户 a’,再分别注册用户 a' and 1=1# 、a' and 1=2# 再来可能触发的地方。

1、查看数据库中账号、密码

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| challenges         |
| cms                |
| mysql              |
| performance_schema |
| security           |
+--------------------+
6 rows in set (0.00 sec)
mysql> use security;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> show tables;
+--------------------+
| Tables_in_security |
+--------------------+
| emails             |
| referers           |
| uagents            |
| users              |
+--------------------+
4 rows in set (0.00 sec)

在这里插入图片描述

2、二次注入实验

2.1、注册账号 a

在这里插入图片描述
在这里插入图片描述

2.2、注册账号 a’ and 1=1#

在这里插入图片描述
在这里插入图片描述

2.3、通过修改 a’ and 1=1# 的密码,来修改 a 的密码

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.4、a’ and 1=2# 无法修改

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3、修改 admin 的密码

3.1、注册账号 admin’#

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.2、修改 admin’# 密码

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值