二次注入原理,主要分为两步
第一步:插入恶意数据
第一次进行数据库插入数据的时候,仅仅对其中的特殊字符进行了转义,在写入数据库的时候还是保留的原来的数据,但是数据本身包含恶意内容。
第二步:引用恶意数据
在将数据存入数据库后,开发者认为数据是可信的,在下一次需要进行的查询的时候,直接从数据库中提出了恶意数据,没有进行进一步的检验和处理,就会造成sql的二次注入
以sql-labs24为例:
1.注册新用户(以admin‘ -- -用户名,123456密码为例)
创建成功,并在security数据库查看(select *from users;)
2.登录注册的用户,显示登录成功的页面
3.对新注册的用户进行修改密码,密码为“wogaila”
4.返回数据库查看修改情况,这时可以发现新注册用户的密码没有改变,而原有的admin用户的密码变为了“wogaila”,这就是二次注入