在asp程式中,如果我們的程式設計不當,就有可能面臨資料庫被別人控制的危險 以下是乙個簡單的使用者更改密碼的** --------------------- username=request("user_name") pwd=request("pwd") username=replace(username,"'","''") pwd=replace(pwd,"'","''") sql="update tbl_test set pwd='" & pwd & "' where uid='" & username & "'" set rs=conn.execute (sql) -------------- 現在,假如我註冊乙個使用者,使用者名為 aa'; exec sp_addlogin 'haha 當該使用者更改密碼時(假設改為pp),會出現什麼後果呢?? sql變為 update tbl_test set pwd='pp' where uid='aa' ; exec sp_addlogin 'haha' 結果是使用者密碼沒有被修改,因為沒有 aa這個使用者,但在你的資料庫中建立了乙個登陸,新登陸名為 haha 將使用者名稱稍加修改,實際上可以執行任何sql語句,任何sql系統過程而這一切都在你不知情的情況下發生的,實際上,上面的只是乙個 示範,稍微修改一下使用者名稱,我們可以做新增乙個dba賬號,刪除所 有紀錄,讀取使用者密碼等越權操作。 解決的辦法: 在你使用引數前,對引數進行嚴格檢驗,尤其是使用者輸入的引數 不但要對其資料型別,長度進行檢查,還要對其內容進行檢查。 我們再看一段**。(使用者登陸) username=request("user_name") pwd=request("pwd") username=replace(username,"'","''") pwd=replace(pwd,"'","''") sql="select uid,pwd from account where uid='" & username & "' and pwd='" & pwd "'" rs.open sql,conn,1,1 if not rs.eof then response.write rs(0) & "歡迎您,您已登陸成功" else response.write "登陸失敗,錯誤的使用者名稱或密碼" end if ............ 以上程式的漏洞是顯而易見的 我們可以以 使用者名稱: admin 密碼: a' or '1'='1 輕易以admin的賬號登陸系統因為我們的sql 變為了 select uid,pwd from account where uid='admin' and pwd='a' or '1'='1' 顯然 uid='admin' and pwd='a' or '1'='1'是恒為成立的所以 rs.eof 為false 正確的寫法應為 sql="select uid,pwd from account where uid='" & username & "' and pwd='" & pwd "'" rs.open sql,conn,1,1 if rs(0)=username and rs(1)=pwd then response.write rs(0) & "歡迎您,您已登陸成功" else response.write "登陸失敗,錯誤的使用者名稱或密碼" end if ----全文完--------
'請勿用於非法用途,本**只是為了讓廣大asp愛好者明白原理,防範於未然。
dim regex, retval ' 建立變數。
set regex = new regexp ' 建立正規表示式。
regex.pattern = patrn ' 設定模式。
regex.ignorecase = false ' 設定是否區分大小寫。
regexptest = regex.test(strng) ' 執行搜尋測試。
end function
server.scripttimeout=999
for i=1 to passlen
flag=false
url=url1&" and (select asc(mid(password,"&i&",1)) from admin where id>0)="'構造的sql語句這裡才是關鍵
SQL注入測試用例
看看是什麼許可權的 and 1 select is member db owner and char 124 2bcast is member db owner as varchar 1 2bchar 124 1 檢測是否有讀取某資料庫的許可權 and 1 select has dbaccess m...
WEEK1 SQL注入小練
第一周學習web,不知道學習筆記寫什麼寫點做題筆記吧。進來先判斷,這道題考的應該是sql注入,所以先試試用 or 繞過登入邏輯看看成不成功 其實我也只會這一點點 1 or1 1 其實這裡的 是可以不需要的但我還是打上了。發現登陸成功了,並且有回顯,所以我們要利用回顯的點去進行注入。首先是判斷unio...
理論小知識 MySQL 及 SQL 注入
如果您通過網頁獲取使用者輸入的資料並將其插入乙個mysql資料庫,那麼就有可能發生sql注入安全的問題。本章節將為大家介紹如何防止sql注入,並通過指令碼來過濾sql中注入的字元。所謂sql注入,就是通過把sql命令插入到web表單遞交或輸入網域名稱或頁面請求的查詢字串,最終達到欺騙伺服器執行惡意的...