黑客工具sqlmap,帶你瞭解什麼師sql注入

1、 sqlmap介紹

sqlmap是一款支持MySQL, Oracle,PostgreSQL, Microsoft SQL Server, Microsoft Access, IBM DB2, SQLite, Firebird,Sybase和SAP MaxDB等數據庫的各種安全漏洞檢測工具。

2、 sqlmap的下載以及安裝

(1)linux下git直接安裝

Kali系統自帶的sqlmap

gitclone –depth 1 https://github.com/sqlmapproject/sqlmap.git sqlmap-dev

(2)windows下安裝

windows下下載sqlmap的壓縮包,解壓後即可使用。但需要一些組件包的支持,需要有python2.7.x或者2.6.x環境支持

D:\\一些工具分類\\Python27

(3)kali及PentestBox默認安裝sqlmap

(4) sqlmap支持的檢測模式

sqlmap支持五種不同的注入模式:

l 基於布爾的盲注,即可以根據返回頁面判斷條件真假的注入;

l 基於時間的盲注,即不能根據頁面返回內容判斷任何信息,用條件語句查看時間延遲語句是否執行(即頁面返回時間是否增加)來判斷;

l 基於報錯注入,即頁面會返回錯誤信息,或者把注入的語句的結果直接返回在頁面中;

l 聯合查詢注入,可以使用union的情況下的注入;

l 堆查詢注入,可以同時執行多條語句的執行時的注入。

(5)sqlmap不同的等級

1、同時顯示基本信息和警告信息。(默認)

2、同時顯示debug信息。

3、同時顯示注入的payload。

4、同時顯示HTTP請求。

5、同時顯示HTTP響應頭。

6、同時顯示HTTP響應頁面。

--level

黑客工具sqlmap,帶你瞭解什麼師sql注入

除此之外,也可以用-v代替level,因為-v就是level的縮寫,因此這樣也是可以的

黑客工具sqlmap,帶你瞭解什麼師sql注入

如果你想看到sqlmap發送的測試payload最好的等級就是3

如下圖,我這裡選擇了-v3,它這裡顯示了注入的payload,那麼這個工具注入的代碼就顯示出來了,因此我們也可以照著這個去學習和研究

黑客工具sqlmap,帶你瞭解什麼師sql注入

3、 數據庫注入的使用

Access數據庫注入sqlmap.py -u "網站" 我們先檢測這個網站是否存在注入點

-u "網站"--tables 列出數據庫中所有表的名字。

-u "網站"-T "表名" --columns 針對某個表的列名

-u "網站"-dump T "表名" -  C "列名"針對某個表裡的某個列。列出該列中的字段內容(注意-dump可以放在後面,不用擔心麻煩注意看清楚大小寫)

因為access數據庫只有一個獨立的數據庫,所以它這裡不需要去猜數據庫名

mssql數據庫注入 -u "網站"

-u "網站"--dbs

-u "網站"--is-dba 查看當前用戶是否是數據庫管理員

-u "網站" --current -db

-u "網站"-D "數據庫名" --tables

-u "網站"-D "數據庫名" -T "表名" --columns

-u "網站"--dump -D "數據庫名" -T "表名"-C "列名"

mysql數據庫同上

一般注入的時候,我們可以先查看它的權限 --privileges

由於mysql和mssql數據庫有多個數據庫和多個網站,那麼這個時候sqlmap默認跑的注入方式是顯錯注入。

1) mysql注入演示

首先簡單的測試是否存在sql注入漏洞

黑客工具sqlmap,帶你瞭解什麼師sql注入

可以看見它這裡顯示了對方網站的操作系統為Windows,然後當前的php版本為5.4以及web服務器Apache的版本,還有當前的數據庫為mysql5.0版本,上面的就是sqlmap注入時候攻擊代碼。

黑客工具sqlmap,帶你瞭解什麼師sql注入

跑完的數據都將會保存在output目錄下生成一個以網站域名命名的文件夾。

黑客工具sqlmap,帶你瞭解什麼師sql注入

由於我是本地環境,所以它這裡就是127.0.0.1

黑客工具sqlmap,帶你瞭解什麼師sql注入

那麼簡單的檢測就這樣演示完了,接下來就是跑數據庫名,為什麼要跑數據庫?因為mysql和mssql跟access數據庫不一樣,mysql有多個數據庫,那麼我們就需要跑出當前網站的數據庫名,就跟我們進行顯錯注入一樣,都需要數據庫名來進一步來弄出表名和表裡面的數據。

這個要用到--current-db這個參數,這個參數是用來顯示當前數據庫名的參數

那麼結果如下,可以看見它這裡顯示出當前的數據庫名為security,那麼我們知道了數據庫名,我們就可以去跑當前數據庫名的所有數據

黑客工具sqlmap,帶你瞭解什麼師sql注入

用-D大寫的D代替databases,那麼這個就是指定對應的數據庫名,然後再用--tables去跑出當前數據庫的所有表名

黑客工具sqlmap,帶你瞭解什麼師sql注入

跑出來的結果如下,跑出了security數據庫的4個表名,分別為emails、referrs、uagents、users。

黑客工具sqlmap,帶你瞭解什麼師sql注入

那既然都跑出表名了,我們想看哪個表名最有價值,一般作為滲透者,都會對user、username、pass、password、admin等表名進行猜解,因為這些關鍵詞的表名一般都存在重要的信息。

那我們就直接猜users表名的數據,當然,猜完表也要猜列名。猜列表要使用到--columns參數,這裡還是一樣,用-D和-T分別代表數據庫名和表名,-T是tables的縮寫,那麼後面就是猜列名的參數--columns

黑客工具sqlmap,帶你瞭解什麼師sql注入

然後就是這裡猜出三個列名。分別是id、password、username等等,那麼我們要猜出所有的數據,那我們就要用到--dump,--dump是全部拖下來的意思(可以這樣理解)

黑客工具sqlmap,帶你瞭解什麼師sql注入

因為這裡有三個列名,那麼用-C全部指定的時候,要用到逗號隔開,再使用--dump全部脫褲。

黑客工具sqlmap,帶你瞭解什麼師sql注入

那麼對應的數據就這麼簡單的顯示出來了

黑客工具sqlmap,帶你瞭解什麼師sql注入

4、注入的選擇

參數:--technique

這個參數可以指定sqlmap使用的探測技術,默認情況下會測試所有的方式

· 測試注入點:sqlmap.py -u url -p id

· sqlmap注入方式techniquesqlmap.py -u url --technique T

支持探測的方式如下

B:Boolean-based blind sql injection(布爾型注入)

E:Error-based SQL injection (報錯型注入)

U:UNION query SQL injection (可聯合查詢注入)

S:Stacked queries SQL injection(可語句查詢注入)

T: Time-based blind SQL injecgtion(基於多時間延遲注入)

比如說我想進行一個時間盲注,再用-v3顯示出當前注入的攻擊代碼。那麼可以對比一下上面默認注入的代碼和這裡選擇注入方式的代碼。是完全不一樣的

黑客工具sqlmap,帶你瞭解什麼師sql注入


分享到:


相關文章: