万能用户名原理分析
1.首先找到登录功能的配置文件,对源代码进行分析
随便输入数据,按f12在network选项中查看相关文件
打开此文件
找到以下代码
经过分析后认为sql语句应该为
select userid from cms_users where username ='用户输入账号' and password ='md5(用户输入密码 )'
而将万能密码admin’ or ‘1’ ='1作为账号输入到登录框时,sql语句就会发生改变,如下
select userid from cms_users where username =‘admin’ or ‘1’=‘1’ and password =‘md5(用户输入密码 )’
and与or在运算时,首先运算and,这时我们分析语句就可以发现1=1为true,password=xxxx为false,所以后面语句为false,而username=admin若为真,则真或假为真,登陆到admin的账户(但显示为万能账户),若为假,则同样登录失败
2.改进万能密码
在原来的1=1后加#号注释掉后面的语句,并用单引号直接将前面的单引号闭合,如下
’ or 1=1#
由于此处为或运算,而1=1恒为真所以用户账号不输也行,而后面的密码被用注释#挡住,所以也没必要输