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進行注入,構造乙個不存在的最好 如博主用的是...