SQL注入【二次注入】
SQL注入【二次注入】
原理
二次注入是指已存储(数据库、文件)的数据输入被读取后再次进入到 SQL 查询语句中导致的注入
二次注入是通过与数据库服务器进行交互的过程再次进行注入。
利用条件
- 用户输入恶意语句。
- 数据库把用户输入的数据没有做任何更改,直接进行了存储。
- 再用户取出数据的过程中,数据库将用户输入的数据完整且没有做任何修饰的展示给用户。
靶场Less-24
1、一个登录界面,可进行更改密码、注册用户
2、查看数据库中原有的数据
3、目的:改掉admin用户的密码
4、注册用户
1 | 注册用户名为admin' -- q |
5、注册成功
6、查看数据库有无增加用户
7、使用用户名admin’ – q 登录
8、观察admin用户的密码为admin
9、更改admin’ – q用户的密码为654321
10、再次查看数据库
观察到新注册的用户admin’ – q 密码没改变,admin用户的密码却更改为654321
11、使用admin用户登录
登录成功
能够更改admin密码原理
1、更改密码处的后端代码
1 | $sql = "UPDATE users SET PASSWORD='$pass' where username='$username' and password='$curr_pass' " |
2、当我们使用admin’ – q用户名 更改密码时 代码变为
1 | $sql = "UPDATE users SET PASSWORD='$pass' where username='admin' -- q' and password='$curr_pass' " |
username=’admin’ – q’==>此处admin’构成闭合,用户名变为amdin用户,– q则注释了后面的单引号
故可以使用 用户名admin’ – q 密码123456 登录,然后更改用户名admin的密码
评论