【SQL注入-08】二次注入案例—以sqli-labs-less24为例

1 二次注入概述

1.1 定义

定义:在将数据(一次注入的)存入到了数据库中之后,开发者就认为数据是可信的。在下一次进行需要进行查询的时候,直接从数据库中取出了脏数据,没有进行进一步的检验和处理,这样就会造成SQL的二次注入。

例子:在第一次插入数据的时候,数据中带有单引号,直接插入到了数据库中;然后在下一次使用中在拼凑的过程中,就形成了二次注入。

1.2 思路

(1)黑客通过构造数据的形式,在浏览器或者其他软件中提交HTTP数据报文请求到服务端进行处理,提交的数据报文请求中可能包含了黑客构造的SQL语句或者命令。
(2)服务端应用程序会将黑客提交的数据信息进行存储,通常是保存在数据库中,保存的数据信息的主要作用是为应用程序执行其他功能提供原始输入数据并对客户端请求做出响应。
(3)黑客向服务端发送第二个与第一次不相同的请求数据信息。
(4)服务端接收到黑客提交的第二个请求信息后,为了处理该请求,服务端会查询数据库中已经存储的数据信息并处理,从而导致黑客在第一次请求中构造的SQL语句或者命令在服务端环境中执行。
(5)服务端返回执行的处理结果数据信息,黑客可以通过返回的结果数据信息判断二次注入漏洞利用是否成功。

2 二次注入案例

2.1 实验平台

实验靶场——虚拟机(IP为172.16.1.1):本节实验靶场是在win2008系统上基于phpstudy搭建的一个sqli-labs漏洞靶场,win2008及phpstudy的安装过程可以参考《【语言环境】WAMP环境部署及优化—以win2008R2SP1为操作系统》,sqli-labs漏洞靶场的搭建可以参考《【环境搭建】基于WAMP环境的sqli-labs漏洞靶场的搭建

注入工具——真实机:本实验利用火狐浏览器来实现union注入,为方便注入过程的编码,建议安装一个扩展插件harkbar,安装过程参考《HackBar免费版安装方法》由于该教程中的2.1.3harkbar我安装后无法正常使用,就安装了HackBar Quantum来代替。安装后出现下图左侧的东西。
在这里插入图片描述
靶机与真实机桥接到同一局域网中。

2.2 实验目标

使用二次注入修改第24关数据库原有账号的密码;
查询该账号密码是否修改成功。

2.3 具体注入过程

2.3.1 注入前准备

(1)真实机打开火狐浏览器,访问靶机IP地址,出现下图,可以不重置实验平台,直接点击Page2进入找到第24关实验。
在这里插入图片描述
(2)进入第24关,初始界面如下:
在这里插入图片描述

2.3.2 确定目标账户admin

首先确认目标账户为admin,此处是确认该目标账户是否存在。
(1)点击此处可建立我们待会要黑掉的账号admin。
在这里插入图片描述
(2)新建账户admin,密码为admin。
在这里插入图片描述
(3)注册时提示该用户已存在,在后续的二次注入中将会修改其密码。
在这里插入图片描述

2.3.3 第一次注入

这里的第一次注入其实就是新建账户的过程:
(1)再次进入注册账户页面。
在这里插入图片描述
(2)注册新用户账号名为admin’#,密码随意,此处取123456。
在这里插入图片描述
(3)注册后进入到该页面,等待5秒后将重定向到登录界面。
在这里插入图片描述

2.3.4 第二次注入

第二次注入的目的是让后台数据库读取刚刚第一次注入账号的内容。
(1)登录账户admin’#。
在这里插入图片描述
(2)重置该账户密码,输入现有密码123456,输入想要更改的目标密码,654321(随意取一个)。点击reset。该操作会激活后台数据库更改密码的语句 update语句+where name = ‘admin’#'该语句的where条件调用了第一个注入的账户,由于该账户中有单引号和井号,单引号与前第一个单引号成功闭合,井号注释掉了后面的单引号,该密码修改语句其实修改的是账户admin的密码。
在这里插入图片描述
(3)弹出密码修改成功,点击home回到主页面。
在这里插入图片描述

2.3.5 验证是否成功修改目标账户admin的密码

退出刚刚的账号,使用账号admin和密码654321登录,登录成功。
在这里插入图片描述
在这里插入图片描述

2.3.6 扩展

该实验的关键在于第一次注入时的账户名代入sql语句执行时,能成功闭合sql语句中的单引号,同理地还可以构建其他账户名,如admin’ and '1。

4 总结

(1)理解二次注入的思路;
(2)掌握二次注入的方法。

参考文章

[1] 《【SQL注入08】二次注入基础及实操(基于sqli-labs-less24)

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值