在一些帐号注册、更改密码薄弱的程序中,我们可以通过二次排序注入来进行一些我们想要实现的内容。二次排序注入也成为存储型的注入,就是将可能导致sql 注入的字符先存入到数据库中,当再次调用这个恶意构造的字符时,就可以出发 sql 注入。例如我们已知数据库如下:
我们就以admin账户为例,通过注册新用户,然后修改新用户的密码来实现修改已知admin账户的密码。首先我们注册一个admin’#的帐号,然后登录后进入修改密码页面进行修改,如下图所示:
(注册帐号)
(修改密码,这里当前密码可以随便输)
然后我们就会发现admin账户的密码被修改了,如下所示:
为什么呢,我们可以看到sql语句如下:
UPDATE users SET PASSWORD='$pass' where username='$username' and password='$curr_pass'
这里因为我们账户是admin’#,#后面的都被注释了,所以相当于我们执行的语句是:
UPDATE users SET passwd="abc" WHERE username ='admin'
那么显而易见修改的就是admin的密码了。
网友评论