在指令碼入侵的過程中,相信每位朋友都面對過表單登陸,特別是管理員後台登陸介面。所以,我今天特別把以前自己在這方面的心得和方法寫出來,和大家一起分享。
第二種是通過指令碼漏洞入侵,這是比較精彩的地方。我們先一起來分析一下。
如果指令碼存在漏洞,那麼我們如果要入侵伺服器就變得就相對簡單一些。登陸表單永遠是和資料庫緊密的聯絡在一起的,拿到資料庫的賬號和密碼就可以成功登陸了,而通過注入當然可以拿到賬號和密碼。這也是一種方法,不過如果要更靈活的運用,我們用不著那麼麻煩,來看看最古老的方法吧。
從單引號著手。如果沒有過濾單引號,那麼我們在賬號和密碼輸入框中輸入「』 or 『』=』(不包括引號,下同)」,多數情況下可以進入後台(是誰發現這個漏洞的?實在太經典了,讓人受益非淺)!為什麼說是沒有過濾單引號的時候是「多數」情況下可以進入呢?意思是還有少數情況不能進入?對,這也將是我們今天分析的重點。先讓大家來看看我的分析吧。go……
通過「』 or 『』=』 」進入後台,指令碼**是這麼寫的,看**:
……dim usernaem,password,sql
username = request。form(「username」)
password = request。form(「password」)
sql = 「select * from admin where username=』」&username&」』 and password=』」&password&」』」
……直接把表單引數放到資料庫中去查詢,如果返回不是eof、bof,那麼登陸就成功,反之不成功。所以我們在賬號和密碼中輸入「 『or 『』=』」放到資料庫中去查詢,將永遠只拿到not(eof or bof),也就是永遠會存在記錄的(除非資料庫中沒有記錄,可能的機會萬分之一),當然就順利進入後台管理了。不過如果指令碼不是這麼寫的,利用這種方法就不會成功。我相信大家一定遇到過這種情況,明明沒有過濾單引號,但是利用「』 or 『』=』」進不到後台。這種情況就是指令碼編寫人員的另一種程式設計思路了。再來看我的分析,還是來先看**:
……dim usernaem,password,sql
username = request。form(「username」)
password = request。form(「password」)
sql = 「select password from admin where username=』」&username&」』」
rs。open sql,conn,1,1
if ont (rs.eof or rs.bof) then
if rs(「password」)=password then
……登陸成功
end if
end if
……看完了**,你應該明白其中的思路了吧?指令碼編寫人員先在資料庫中去查詢表單中提交的使用者名稱,找到後再把資料庫中的密碼和表單中提交的密碼相比較,如果表單中輸入的密碼和資料庫中的密碼相同,那麼就登陸成功。
面對這種情況,我們也是有辦法的。想想表單引數中的賬號引數是沒有過濾單引號的,那麼我們輸入「『 or 『』=』」會找到一條記錄。指令碼會取回找到的這條相應記錄的密碼再和我們輸入的密碼進行比較,現在我們關鍵就是不知道密碼是多少了!用「』or 『』=』」永遠是取的資料庫的第一條記錄,我們可以改變他的順序取到我們想要的記錄!看下面的乙個表:
----------------------+-------------------,
username password
----------------------+------------------
test 123456
admin admin123
ms mszr
…… ……
上面是管理員表的記錄,採用「』or 『』=』」取得的是第一條記錄,如果我們在賬號中輸入「『 or password=』admin123』 and 『』=』」,如果密碼是正確的得到的相應記錄就是第二條記錄,再在密碼中輸入admin123我們就成功的進入了後台。不過這樣做的前提是知道了密碼,對於我們來說也有一定的困難,但是這也是一種思路,比如對方如果採用mssql資料庫我們就有機會拿到他的密碼,讓我們把密碼給他爆出來吧。來,在賬號中輸入「『 and password>1 and 『』=』」,通過爆字段值的方法,在ie中就返回了密碼的值。現在有了密碼就可以通過上面的方法進入了。再來換個思路,我們一樣可以拿到賬號名字,上面已經拿到密碼了,現在我們就來拿他的賬號吧,一樣通過爆字段的方法來拿。輸入「『 or password=』admin123』 and username>1 and 『』=』」,在ie中爆出了賬號,這樣賬號也就拿到了。有了賬號和密碼我們就可以名正言順地進入後台了!
上面我們分析了一大把,現在是時候讓我們來消化消化了,多吃不消化可不是學習的好方法。在網上找個登陸入口吧,隨便找了乙個,我在使用者名稱和密碼中先分別輸入單引號。
看到上面的提示,大家應該知道這是沒有過濾單引號的情況下返回的錯誤資訊,再進一步看看是哪個引數沒有過濾。我現在只在賬號中輸入單引號,密碼不輸入,返回同樣的結果。證明至少表單中的賬號引數是沒有過濾的。再來看看表單中密碼引數是否過濾了,我現在在賬號中輸入1234,密碼中輸入乙個單引號。返回使用者名稱不存在的提示。
證明密碼欄位是過濾的,要不然就是根本沒有放到資料庫中去查詢。
就按照第二種方法的思路,我們先拿乙個密碼吧。密碼欄位是多少?80%都可以猜到的。先看看網頁表單的源**,看看那個密碼框的名字「name=password」試試「password」,在賬號中輸入「』 and password>1 and 『』=』」,提示「password」不是有效的欄位名,看來不是這個,換換常用的試試「userpassword」,輸入「』 and userpassword>1 and 『』=』」,好了,爆出密碼竟然是:「f**kusa(呵呵,很愛國啊!我絕不會黑了它,測試好我就閃人,隨便給管理員寫封em,提醒下注意安全)」,現在我們來拿賬號吧,在賬號框中輸入「』 or userpassword=』f**kusa』 and username>1 and 『』=』」直接爆出賬號了,證明我們欄位名是猜對的。賬號是「admin」,現在我們拿著賬號的密碼來登陸吧!ok,成功返回管理頁面
黑客病毒的入侵,威脅著智慧型終端安全
隨著物聯網技術和網際網路技術的日益發展,在資訊化飛速發展的當今時代,智慧型互聯正在成為各個行業未來的發展方向,智慧型互聯包括物聯網 萬物互聯,機器與機器,工業控制體系,資訊化,也就是德國人所說的工業4.0。正是工業4.0是乙個長期的過程,我們更應該關注它的安全問題。像智慧型互聯裝置,比如起重機,裝置...