SQL注入——二次注入漏洞

235 阅读2分钟

一、二次注入原理

在这里插入图片描述

二、二次注入需要具备的两个条件:

(1)用户向数据库插入恶意语句(即使后端代码对语句进行了转义,如mysql_escape_string、mysql_real_escape_string转义)
(2)数据库对自己存储的数据非常放心,直接取出恶意数据给用户

三、二次注入实例

实例:less-24
应用范围:我们注册一个用户后,然后点击用户的图像类似进入了用户中心,
对应的URL地址:帐号 ceshi www.XXX.com/member.php?…
反过来想:如果我们在注册的时候将用户名改为
ceshi’ union select 1,2,3–

总之:将注入语句通过web写入到数据库中,web在调用数据库中的数据成为条件查询时,就触发了sql注入

访问目标网站
在这里插入图片描述
点击下方new user click here? 注册两个新用户xiaohua/xiaohua xiaohua’#/1qaz2wsx
在这里插入图片描述
注册完成后,咱来看一下数据库中两个账户的内容
在这里插入图片描述

注册完成后登录xiaohua’#,提示修改新的密码:
在这里插入图片描述
输入旧密码1qaz2wsx 新密码123456 后点击reset
在这里插入图片描述
此时,xiaohua’#的密码没有被修改,xiaohua的密码被修改为123456
在这里插入图片描述
原因:

修改密码时:

$username= $_SESSION[“username”];//直接取出了数据库的数据

s q l = " U P D A T E u s e r s S E T P A S S W O R D = ′ sql = "UPDATE users SET PASSWORD=' sql="UPDATEusersSETPASSWORD=′pass’ where username=‘ u s e r n a m e ′ a n d p a s s w o r d = ′ username' and password=' username′andpassword=′curr_pass’ ";//对该用户的密码进行更新

$sql = "UPDATE users SET PASSWORD=‘123456’ where username=‘xiaohua’#'and password=1qaz2wsx//#号把后面的都注释掉了,所以sql语句最终的意思是修改xiaohua的密码为123456

更多web安全工具与存在漏洞的网站搭建源码,收集整理在知识星球。
在这里插入图片描述