網站萬能密碼_第1頁
網站萬能密碼_第2頁
網站萬能密碼_第3頁
全文預覽已結束

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、網站萬能密碼TOP SECRET QQ:287305463對網站萬能密碼'or'='or'的淺解'or'='or'漏洞是一個比較老的漏洞了,主要是出現在后臺登錄上,利用這個漏洞,我們可以不用輸入密碼就直接進入系統(tǒng)的后臺.它出現的原因是在編程時邏輯上考慮不周,同時對單引號沒有進行過濾,從而導致了漏洞的出現.先給大家簡單介紹下漏洞的原理吧,只要大家搞懂了原理,就可以自己去找這樣漏洞的系統(tǒng)了.1:語句:''or'='or'  a'or'1=1- 

2、60;'or1=1-  "or1=1-  or1=1-  'or"="a'='a  ') or ('a'='a等等,2:分析利用:我從站長網站下載了"織夢工作室企業(yè)全站程序(原良精)修正美化版"源代碼,從中找到后臺登錄的頁面"login.asp"其中有以下一段代碼:<%(1)pwd = request.form("pwd") "獲取客戶端輸入的密碼

3、,再把值賦給pwd"(2)name = request.form("name")  "獲取客戶端輸入的用戶名再把值賦給name"都沒有進行任何過濾(3)Set rs = Server.CreateObject("ADODB.Connection") "利用Server對象的CreateObject方法創(chuàng)建ADO組件的Connection對象"(4)sql = "select * from Manage_User where UserName='" &

4、 name & "' And PassWord='"&encrypt(pwd)&"'"  "將用戶名和密碼放入查詢語句中查詢數據庫"(5)Set rs = conn.Execute(sql) "執(zhí)行SQL語句"(6)If Not rs.EOF = True Then  "當前的記錄位于Connection對象的最后一個記錄之前"(7)Session("Name") =  

5、;rs("UserName")  "將UserName的屬性賦給Name的Session自定義變量"(8)Session("pwd") =  rs("PassWord")  "將PassWord的屬性賦給pwd的Session自定義變量"(9)Response.Redirect("Manage.asp")了  "利用Response對象的Redirect方法重定向"Manage

6、.asp"(10)Else(11)Response.Redirect "Loginsb.asp?msg=您輸入了錯誤的帳號或口令,請再次輸入!"(12)End If(13)end if%>  從這段代碼中,我們可以看到后臺是采用"Session"驗證的,大家知道,還有一種是采用"cookie"驗證的,不過原理相同,從分析中,我們可以看到后臺登錄沒有對客戶輸入的用戶名和密碼進行任何過濾,就交給了SQL語句查詢,如果查詢的記錄是位于最后一條記錄之前,剛設置Session變量UserName,PassWo

7、rd的值分別為Name,pwd,并重定向到"Manage.asp".  從以上分析中.出現了很大的安全漏洞,問題就出現在第一,第二句,它們的功能是獲得客戶端輸入的用戶名和密碼卻沒有進行任何的過濾,也不會去檢查我們輸入的數據,這樣,我們就可以對其實行攻擊,要實行攻擊這種漏洞的問題關鍵就是使SQL語句的查詢結果為真,這里我們又要用到or和and的邏輯運算的知識,我這里不詳細的說,就講二點,第一:優(yōu)先原則-出現or同時又出現and時,則先運算and運算符。第二:and運算符意思,是"且",就是對二個表達式進行邏輯"與"運

8、算(我這兒說的是"且),而or運算符的意思,是"或",就是對二個表達式進行邏輯"或"運算。下面是二個運算符的運算結果:  and邏輯運算的結果:真-真=真;假-真=假;  真-假=假; 假-假=假.  or邏輯運算的結果:真-真=真;假-真=真;  真-假=真; 假-假=假.大家自己可以體會下  下面我們先來看代碼中的SQL查詢語句    sql = "select * from Manage_User where

9、UserName='" & name & "' And PassWord='"&encrypt(pwd)&"'      "  ,要使這條語句執(zhí)行為真,我們就要構造一個特殊的用戶名,就可繞過程序的驗證,進入后臺,我們只要在用戶名處輸入'or'='or',密碼處隨便輸入字符(我們就輸入000吧),這樣上面的SQL語句就變成了sql = "select * from Manage_Us

10、er where UserName=''or'='or''and PassWord='000'"那么where后的語句轉換成邏輯語句后為假or真or假and假,通過簡單的運算,則最終為真,而SQL語句的查詢結果也變成真了,這樣大家可能還不怎么聽得懂,我換成另一條語句:1' or 1=1 or '1'='1,那么SQL語句就變成了sql = "select * from Manage_User where UserName='1' or 1=1 or '1'='1' and PassWord='000'"大家知道,在邏輯表達式中'1'是為假,1=1總為真吧,'1'='1'也為真,而密碼我們是隨便輸入的所以為假,那么where后的語句轉換成邏輯語句后為假or真or真and假,最終的運算結果也為真這些大家自己慢慢的去實踐,去體會,我相信大家都會搞懂的,大家還可以自己構造一些語句去驗證下  對于Session驗證的,我們還可以進行

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論