sqlilab_24

sqlilab_24

十一月 23, 2021

二次注入

在对第一次插入数据的时候对插入的数据进行了过滤,但如果只是对特殊字符添加/进行转译,但由于用于转译/不会被写入数据库中,插入数据库中的还是我们输入的语句,在再次调用数据库中我们插入的数据的时候,如果完全信任了数据库中的数据不加过滤的话就会,引起二次注入

sqlilab_24

![](D:\p\picture\屏幕截图 2021-10-27 110239.png)

先试试在登入界面注入

Dhakkan’#

![](D:\p\picture\屏幕截图 2021-10-27 110705.png)

失败了

查看源码

![](D:\p\picture\屏幕截图 2021-10-27 113114.png)

发现添加了过滤

在看看创建新用户的源码

![](D:\p\picture\屏幕截图 2021-10-27 113445.png)

还是添加了过滤

在看看更改密码的源码

![](D:\p\picture\屏幕截图 2021-10-27 113909.png)

没有对username进行过滤,并且查询语句中还用上username

那我们就对新建一个username,对username进行构造

新建一个用户名为Dhakkan’#密码为123

![](D:\p\picture\屏幕截图 2021-10-27 210433.png)

然后在进行改密码操作将密码改成321

![](D:\p\picture\屏幕截图 2021-10-27 210651.png)

此时更改密码的语句就会变为username=’Dhakkan’#’and password=’321’

这样就形成了一个sql注入语句变成了更改了Dhakkan的密码这样我们就能用321登入账号Dhakkan了

![](D:\p\picture\屏幕截图 2021-10-27 211541.png)

成功用321登入改账号