文章目录
Less_24 二次注入
sqli-labs 通关指南:Less 24 - 乌漆WhiteMoon - 博客园 (cnblogs.com)
由于每次提交都会切换页面,因此没有任何注入点。这里就不是暴露敏感信息,而是进行其他的破坏,例如读取其他的账号的权限。
- 二次注入
先注册一个新用户为admin'#
#
是注释符,不仅可以闭合字段,也可以将后面的内容注释掉
然后登录进去修改密码,会发现会回显现在登录的用户
修改完密码后,我们用新修改的密码登录admin
,发现是可以的
就是说我们修改的其实是用户admin
的密码
这可以看出来吧
观察登录,注册,密码修改界面的源码,发现都没有明显的注入点
在密码修改时
UPDATE users SET PASSWORD ='$pass' where username ='$username' and password='$curr_pass'
如果写入的是admin'#
UPDATE users SET PASSWORD ='$pass' where username ='admin'# and password='$curr_pass'
由于此时的用户名没有进行转义,所以#
被当成注释符
所以整个语句变成
UPDATE users SET PASSWORD ='$pass' where username ='admin'#'
这就是所谓的 二次注入,这种注入发生在用户提交的值被存储在数据库中,这个值可能被转义过。当这个值被其他模块调用时,会使用而不转义的原来的数据,如果这个数据是恶意注入,在不转义的情况下就会生效。