原理
二次注入是通过与数据库服务器进行交互的过程再次进行注入
利用条件
- 用户输入恶意语句
- 数据库把用户输入的数据没有做任何更改,直接进行了存储
- 再用户取出数据的过程中,数据库将用户输入的数据完整且没有做任何修饰的展示给用户
利用场景
常常发生在注册页面,插入恶意语句,在仅知道管理员的账号,但是不知道密码的情况下,改掉管理员的密码
靶场
1、一个登录界面,可进行更改密码、注册用户
2、查看数据库中原有的数据
3、目的:改掉admin用户的密码
4、注册用户
注册用户名为admin' -- q
密码为123456
5、注册成功
6、查看数据库有无增加用户
7、使用用户名admin’ – q 登录
8、观察admin用户的密码为admin
9、更改admin’ – q用户的密码为654321
10、再次查看数据库
观察到新注册的用户admin’ – q 密码没改变,admin用户的密码却更改为654321
11、使用admin用户登录
登录成功
能够更改admin密码原理
1、更改密码处的后端代码
$sql = "UPDATE users SET PASSWORD='$pass' where username='$username' and password='$curr_pass' "
2、当我们使用admin’ – q用户名 更改密码时 代码变为
$sql = "UPDATE users SET PASSWORD='$pass' where username='admin' -- q' and password='$curr_pass' "
username=‘admin’ – q’==>此处admin’构成闭合,用户名变为amdin用户,-- q则注释了后面的单引号
故可以使用 用户名admin’ – q 密码123456 登录,然后更改用户名admin的密码