SQL注入漏洞測試工具比較

2021-09-06 04:53:19 字數 3896 閱讀 7987

sql注入測試一定要使用工具。原因一:工作效率;原因二:人工很難構造出覆蓋面廣的盲注入的sql語句。

例如當乙個查詢的where字句包含了多個引數,or and的關係比較多時,簡單的or 1=1, and 1=2是很難發現注入點的。

sql注入的工具很多(top 15 free sqlinjection scanners),我最近使用的有sqlmap,sqlix,jbrofuzz,sqlpower injector, **啄木鳥.現將他們的使用方法和比較結果貼於此:

sqlmap

sqlmap是python開發的sql注入漏洞測試工具。沒有ui介面的命令列工具。雖說是命令列工具,可他的使用比**啄木鳥,sql powerinjector 容易多了,並且有很詳細的幫助文件。

sqlmap根目錄下sqlmap.py是主程式,sqlmap.conf是配置檔案。sqlmap的使用有2種方式:

1 在cmd中直接輸入命令列。

2 在sqlmap.conf中配置命令列引數,然後在cmd中用sqlmap.py -c sqlmap.conf 發起攻擊。

我比較喜歡第二種方式。這裡僅列出sqlmap.conf種幾個命令。更詳細的命令描述參考doc目錄下的readme.pdf,

#target url.

#example:

url =

指定攻擊的url位址。

#data string to be sent through post.

data=

如果是post命令的話,請在data欄位填上post的資料。

如果**需要登入的話,請在cookie欄位填上cookie資料。cookie資料可以用wireshark抓包得到。

#alert with audio beep when sql injection found.

beep= true

建議把beep設為true,當發現注入點時sqlmap會嘀的一聲,很提神的聲音。

相關命令設定好以後,在命令列中輸入sqlmap.py -c sqlmap.conf,就可以開始sql注入測試啦。發現注入點(嘀的一聲響)後,就可以通過設定其他命令來嘗試獲取更多的後台資料庫資訊。

sqlix

sqlix是由owasp用perl開發的sql注入漏洞測試工具。跟sqlmap一樣是命令列驅動,也和sqlmap一樣的好用。沒有詳細的幫助文件,專案主頁上有簡單的安裝和使用介紹。

sqlix依賴2個包:首先使用下面的命令安裝依賴包:

perl -mcpan -e 'install www::checksite'

perl -mcpan -e 'install tie::chararray'

如果checksite安裝失敗,出現如下錯誤資訊:

maketest had returned bad status, won't install without force

使用下面的命令強制安裝:

perl-mcpan -e "cpan::shell->force(qw(install www::checksite));"

安裝成功後就可以在cmd中開始sqlix的注入測試了。sqlix的命令相對較少:

-url給定測試的url位址

--post_content如果是post命令的話,**上post資料

-crawl這是乙個唯一sqlmap沒有的功能。他指定乙個url的根目錄,爬蟲原理爬出所有的鏈結位址,然後對每個位址進行注入測試。

-v顯示資訊級別,值越大,顯示的資訊越多。

-all

-method_taggy

-method_error

-method_blind

-method_blind_integer

-method_blind_string

-method_blind_statement

-method_blind_comment

以上 這些是根據不同的注入原理得出的不同的注入方法,一般選擇-all或者-method_blind,應用所有的注入方法。

例如:sqlix.pl -url -method_blind-exploit -v=2

幾秒鐘後,顯示資訊如下:

analysingurl

[+] working on id

[+] method: sql blind integer injection

[found] blind sql injection: integer based

[info] current function:

[info] length: 0

[found] sql blind integer injection

results:

thevariable [id] from [ vulnerable to sql injection [integer without quote - ].

「is vulnerable」 表明這個url是有注入漏洞的。

sqlix發現漏洞的能力確實不錯,不比sqlmap差。而漏洞利用的能力遠不如sqlmap,他只能執行一些函式和sql語句。事實上在不知道後台資料庫表名的情況下很難執行sql語句。sqlix這樣設計是可以理解的,他的目的只是為了進行sql注入漏洞測試發現漏洞,才不希望被用來幹壞事呢。

jbrofuzz,是owasp開發web應用程式模糊(fuzz)測試工具.有ui介面,但真的不好用,很多常用操作都沒有快捷鍵的支援。他提供sql注入相關的有效載荷(payload,這個詞真沒有合適的中文翻譯)。直接看看sql注入的payload吧:

' or1=1--

and12=21

or'7659'='7659

unionall select @@version--

unionall select 1,2,3

1 anduser_name() = 'dbo'

等等payload有很多。jbrofuzz用這些預定義的payload去替換http請求中的引數值(可以是請求的任意字段),儲存http返回資料,並對返回資料做統計分析,形成統計圖表,通過人工分析統計圖表來判斷是否有注入漏洞。很費勁,建議不要用jbrofuzz進行sql注入漏洞測試。他的價值在於很多的payload,基本上每個payload對應一種注入方法,可以作為sql注入學習和手工測試的參考。

sqlpowerinjector:

悲慘,真不好用。沒有其他評價。

**啄木鳥

能發現簡單的注入漏洞。wireshark抓包可見,他構造的sql注入payload僅僅是簡單的"and 1=1--","and1>1--"等。 在發現漏洞後啄木鳥猜表面的能力也很弱,只是依靠查詢ms-sql和oracle的user table來獲取使用者表名。

實際測試結果

sqlmap 啄木鳥 sqlix  /news.php?id=92

sqlmap 啄木鳥 sqlix  /article.asp?id=102&title=fast%20food%20marketing%20for%20children%20is%20on%20the%20rise

sqlmap 啄木鳥 sqlix  /article.asp?id=1969

sqlmap no    sqlix 

sqlmap no    sqlix 

sqlmap no    sqlix  /ebookprint.php?id=245

sqlmap no    sqlix  /******-nutrition-facts.php?id=21019

sqlmap no    sqlix  /******/artinfo.php?id=6534

最後結果:sqlmap是個很好的sql注入測試工具。

SQL注入漏洞測試工具比較

sql注入測試一定要使用工具。原因一 工作效率 原因二 人工很難構造出覆蓋面廣的盲注入的sql語句。例如當乙個查詢的where字句包含了多個引數,or and的關係比較多時,簡單的 or 1 1,and 1 2是很難發現注入點的。sql注入的工具很多 top 15 free sql injectio...

SQL注入漏洞測試工具比較

sql注入測試一定要使用工具。原因一 工作效率 原因二 人工很難構造出覆蓋面廣的盲注入的sql語句。例如當乙個查詢的where字句包含了多個引數,or and的關係比較多時,簡單的or 1 1,and 1 2是很難發現注入點的。sql注入的工具很多 top 15 free sqlinjection ...

墨者 SQL注入漏洞測試 delete注入

測試注入 嘗試order by 失敗 測試and,頁面正常回顯 試著用報錯注入,and updatexml 1,concat 0x7e,select database 0x7e 1 發現有注入點,資料庫是pikaqiu 在這裡提醒大家不要用id 61 65進行注入,構造乙個不存在的最好 如博主用的是...