本人小白,如果哪里有问题请大佬指出,师傅们如果有什么疑问也可以在评论区留言我们可以一起探讨学习。
sql注入之二次注入
二次注入,它与传统的一次性注入攻击略有不同。在二次注入中,攻击者利用应用程序中存储的用户输入,该输入被存储在数据库中,然后在稍后的某个时间点被再次使用,进而导致注入漏洞。
语句相当于其他的sql注入不会有什么区别,唯一在一注入的节点与时间。
接下来我们使用sqli-labs24靶场来进行一个测试
第一步:创建一个账户
我们可以将其命名为一个
admin'#
密码我就随便输入一个数字1
这是我们二次注入的第一步
第二步:登录并且改密码
可以看到我们已经登录进来了,现在进行改密码
可以看到我们已经改密码成功了。
师傅们仔细观察一下,是不是可以发现我们在改密码时候在current password也就是当前密码这一栏会发现,我们之前设置的密码不是1吗?
为什么现在明明不是之前的密码也可以改密码呢?
这就是我们的二次注入了。
结果解释
这是因为我们的后端代码是
UPDATE users SET PASSWORD='更改的密码' where username='xxxx' and password='xxxxx'
而我们的id也就是username是admin'#这就导致了一个问题的诞生我们的后端语句被改为了
UPDATE users SET PASSWORD='更改的密码' where username='admin'#' and password='xxxxx'
它后面的password明显被我们注释掉了,所以造就了我们不需要进行一个正确的密码就可以更改密码。
大家也可以使用一个sql语句进行一个注入。
但是大部分对注册名称都有长度限制。