实验目的
通过本实验理解SQL注入中二次注入漏洞引起的原因,如何利用漏洞进行二次注入。
实验环境
渗透平台:Kali
目标网站:SQLI平台
实验原理
二次排序注入也成为存储型的注入,就是将可能导致sql注入的字符先存入到数据库中,当再次调用这个恶意构造的字符时,就可以触发sql注入。
二次排序注入思路:
(1)黑客通过构造数据的形式,在浏览器或者其他软件中提交HTTP数据报文请求到服务端进行处理,提交的数据报文请求中可能包含了黑客构造的SQL语句或者命令。
(2)服务端应用程序会将黑客提交的数据信息进行存储,通常是保存在数据库中,保存的数据信息的主要作用是为应用程序执行其他功能提供原始输入数据并对客户端请求做出响应。
(3)黑客向服务端发送第二个与第一次不相同的请求数据信息。
(4)服务端接收到黑客提交的第二个请求信息后,为了处理该请求,服务端会查询数据库中已经存储的数据信息并处理,从而导致黑客在第一次请求中构造的SQL语句或者命令在服务端环境中执行。
(5)服务端返回执行的处理结果数据信息,黑客可以通过返回的结果数据信息判断二次注入漏洞利用是否成功。
源码中的漏洞
此例子中我们的步骤是注册一个admin’#的账号,接下来登录该帐号后进行修改密码。此时修改的就是admin的密码。
Sql语句变为UPDATE users SETpasswd=“New_Pass” WHERE username =’ admin’ # ’ AND password=’ ,也就是执行了UPDATE users SETpasswd=“New_Pass” WHERE username =’ admin’
(1)初始数据库为
注册admin’#账号(密码为123456)
如果此时查看后台数据库,此时的数据库中出现了admin’#的用户,同时admin的密码为111 登录admin’#,并修改密码
可以看到admin的密码已经修改为lcamry
实验步骤
第一步 在kali平台上使用Firefox访问SQLI的less-24实验
网站URL:
http://【靶机IP】/Less-24
第二步 注册一个新账号
点击登录框下方的“New User click here?”链接:
新注册账号名为admin’#密码为123456
第三步 以账号admin’#密码123456登录后修改密码
将密码由原来的123456修改为test
显示密码修改成功。
第四步 以账号admin密码test登录成功
思考与总结
通过本次实验,成功实现了利用源码中存在的二次注入漏洞,不使用admin的正确密码来绕过口令验证登录。
因此在编写代码时一定加强各种web漏洞的检测与防范,保证Web体系的安全。