遇到一道二次注入的题目,写了之后感觉自己得记一下。
原理:
二次注入需要具备2个条件:
(1)用户向数据库插入恶意语句(即使后端代码对语句进行了转义,如mysql_escape_string、mysql_real_escape_string转义)
(2)数据库对自己存储的数据非常放心,直接取出恶意数据给用户
例题
先添加一个用户,名为
',username=database();#
编辑用户将其再次赋值提交
得到数据库库名
接下来步骤大致相同
查表
查列
得数据
在编辑用户页面中,我们对含有恶意执行语句的username重新赋值上相同的恶意语句,导致其直接执行。
另外
在sql-labs第24关也是对于二次注入的学习,可以动手尝试
[CISCN2019 华北赛区 Day1 Web5]CyberPunk 这道题也有异曲同工之妙,可以尝试一下
(一开始也是尝试使用上面的方法,但是实际上爆到表后就无法进行下去(可能做了限制),才发现是在提交之后报错输出)