導航:首頁 > 凈水問答 > sqlmap過濾系統資料庫

sqlmap過濾系統資料庫

發布時間:2022-02-07 02:34:09

A. 在使用sqlmap時,下面哪個命令可以獲取資料庫列表,a,dbs b,tables c,os-shell

dbs databases縮寫

B. 怎麼判斷網站資料庫是不是MySQL 用sqlmap怎麼爆後台帳戶名和密碼 怎麼手工爆

注入語句如下:
Username: jonnybravo』 or 1=1; –

該注入語句要做的就是從資料庫查詢用戶jonnybravo,獲取數據後立刻終止查詢(利用單引號),之後緊接著一條OR語句,由於這是一條「if狀態」查詢語句,而且這里給出 「or 1=1」,表示該查詢永遠為真。1=1表示獲取資料庫中的所有記錄,之後的;–表示結束查詢,告訴資料庫當前語句後面沒有其它查詢語句了。

圖1 正常方式查看用戶信息
將payload注入後,伺服器泄露了資料庫中的所有用戶信息。如圖2所示:

圖2 注入payload導致資料庫中所有數據泄露
至此,本文向讀者演示了一種基本SQL注入,下面筆者用BackTrack和Samurai 等滲透測試發行版中自帶的SQLmap工具向讀者演示。要使用SQLmap,只需要打開終端,輸入SQLmap並回車,如下圖所示:

如果讀者首次使用SQLmap,不需要什麼預先操作。如果已經使用過該工具,需要使用—purge-output選項將之前的輸出文件刪除,如下圖所示:

圖3 將SQLmap output目錄中的原輸出文件刪除
本文會演示一些比較獨特的操作。通常人們使用SQLmap時會直接指定URL,筆者也是用該工具分析請求,但會先用Burp查看請求並將其保存到一個文本文件中,之後再用SQLmap工具調用該文本文件進行掃描。以上就是一些准備工作,下面首先就是先獲取一個請求,如下所示:
GET /chintan/index.php?page=user-info.php&username=jonnybravo&password=momma&user-info-php-submit-button=View+Account+Details HTTP/1.1
Host: localhost
User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:27.0) Gecko/20100101 Firefox/27.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Referer: http://localhost/chintan/index.php?page=user-info.php
Cookie: showhints=0; username=jonnybravo; uid=19; PHPSESSID=f01sonmub2j9aushull1bvh8b5
Connection: keep-alive

將該請求保存到一個文本文件中,之後發送到KALI linux中,用如下命令將該請求頭部傳給SQLmap:
SQLmap –r ~/root/Desktop/header.txt

Self-Critical Evaluation
命令中-r選項表示要讀取一個包含請求的文件,~/root/Desktop/header.txt表示文件的位置。如果讀者用VMware,例如在Windows上用虛擬機跑KALI,執行命令時可能產生如下圖所示的錯誤提示:

這里必須在請求頭中指定一個IP地址,使KALI linux能與XP正常通信,修改如下圖所示:

之後命令就能正常執行了,顯示結果如下圖所示:

基本上該工具做的就是分析請求並確定請求中的第一個參數,之後對該參數進行各種測試,以確定伺服器上運行的資料庫類型。對每個請求,SQLmap都會對請求中的第一個參數進行各種測試。
GET /chintan/index.php?page=user-info.php&username=jonnybravo&password=momma&user-info-php-submit-button=View+Account+Details HTTP/1.1

SQLmap可以檢測多種資料庫,如MySQL、Oracle SQL、PostgreSQL、Microsoft SQL Server等。

下圖是筆者系統中SQLmap正在對指定的請求進行檢測時顯示的資料庫列表:

首先它會確定給定的參數是否可注入。根據本文演示的情況,我們已經設置OWASP mutillidae的安全性為0,因此這里是可注入的,同時SQLmap也檢測到後台資料庫DBMS可能為MYSQL。

如上圖所示,工具識別後台資料庫可能為MYSQL,因此提示用戶是否跳過其它類型資料庫的檢測。
「由於本文在演示之前已經知道被檢測資料庫是MYSQL,因此這里選擇跳過對其它類型資料庫的檢測。」
之後詢問用戶是否引入(include)測試MYSQL相關的所有payload,這里選擇「yes」選項:

測試過一些payloads之後,工具已經識別出GET參數上一個由錯誤引起的注入問題和一個Boolean類型引起的盲注問題。

之後顯示該GET參數username是一個基於MYSQL union(union-based)類型的查詢注入點,因此這里跳過其它測試,深入挖掘已經找出的漏洞。

至此,工具已經識別出應該深入挖掘的可能的注入點:

接下來,我把參數username傳遞給SQLmap工具,以對其進行深入挖掘。通過上文描述的所有注入點和payloads,我們將對username參數使用基於Boolean的SQL盲注技術,通過SQLmap中的–technique選項實現。其中選擇如下列表中不同的選項表示選用不同的技術:
B : 基於Boolean的盲注(Boolean based blind)
Q : 內聯查詢(Inline queries)
T : 基於時間的盲注(time based blind)
U : 基於聯合查詢(Union query based)
E : 基於錯誤(error based)
S : 棧查詢(stack queries)
本例中也給出了參數名「username」,因此最後構造的命令如下:
SQLmap –r ~root/Desktop/header.txt – -technique B – -p username – -current-user

這里-p選項表示要注入的參數,「–current-user「選項表示強制SQLmap查詢並顯示登錄MYSQL資料庫系統的當前用戶。命令得到輸出如下圖所示:

同時也可以看到工具也識別出了操作系統名,DBMS伺服器以及程序使用的編程語言。
「」當前我們所做的就是向伺服器發送請求並接收來自伺服器的響應,類似客戶端-伺服器端模式的交互。我們沒有直接與資料庫管理系統DBMS交互,但SQLmap可以仍識別這些後台信息。
同時本次與之前演示的SQL注入是不同的。在前一次演示SQL注入中,我們使用的是前綴與後綴,本文不再使用這種方法。之前我們往輸入框中輸入內容並等待返回到客戶端的響應,這樣就可以根據這些信息得到切入點。本文我們往輸入框輸入永遠為真的內容,通過它判斷應用程序的響應,當作程序返回給我們的信息。「
結果分析
我們已經給出當前的用戶名,位於本機,下面看看它在後台做了什麼。前文已經說過,後台是一個if判斷語句,它會分析該if查詢,檢查username為jonnybravo且7333=7333,之後SQLmap用不同的字元串代替7333,新的請求如下:
page=user-info.php?username=』jonnybravo』 AND 『a』='a』 etc..FALSE
page=user-info.php?username=』jonnybravo』 AND 『l』='l』 etc..TRUE
page=user-info.php?username=』jonnybravo』 AND 『s』='s』 etc..TRUE
page=user-info.php?username=』jonnybravo』 AND 『b』='b』 etc..FALSE

如上所示,第一個和最後一個查詢請求結果為假,另兩個查詢請求結果為真,因為當前的username是root@localhost,包含字母l和s,因此這兩次查詢在查詢字母表時會給出包含這兩個字母的用戶名。

「這就是用來與web伺服器驗證的SQL server用戶名,這種情況在任何針對客戶端的攻擊中都不應該出現,但我們讓它發生了。」
去掉了–current-user選項,使用另外兩個選項-U和–password代替。-U用來指定要查詢的用戶名,–password表示讓SQLmap去獲取指定用戶名對應的密碼,得到最後的命令如下:
SQLmap -r ~root/Desktop/header.txt --technique B -p username -U root@localhost --passwords

命令輸出如下圖所示:

Self-Critical Evaluation
有時可能沒有成功獲取到密碼,只得到一個NULL輸出,那是因為系統管理員可能沒有為指定的用戶設定認證信息。如果用戶是在本機測試,默認情況下用戶root@localhost是沒有密碼的,需要使用者自己為該用戶設置密碼,可以在MySQL的user數據表中看到用戶的列表,通過雙擊password區域來為其添加密碼。或者可以直接用下圖所示的命令直接更新指定用戶的密碼:

這里將密碼設置為「sysadmin「,這樣SQLmap就可以獲取到該密碼了,如果不設置的話,得到的就是NULL。
通過以上方法,我們不直接與資料庫伺服器通信,通過SQL注入得到了管理員的登錄認證信息。
總結
本文描述的注入方法就是所謂的SQL盲注,這種方法更繁瑣,很多情況下比較難以檢測和利用。相信讀者已經了解傳統SQL注入與SQL盲注的不同。在本文所處的背景下,我們只是輸入參數,看其是否以傳統方式響應,之後憑運氣嘗試注入,與之前演示的注入完全是不同的方式。

C. sqlmap 要到當前的管理員沒有許可權讀取數據怎麼辦

TIP1
當我們注射的時候,判斷注入
http://site/script?id=10http://site/script?id=11-1 # 相當於 id=10http://site/script?id=(select 10) # 相當於 id=10http://site/script?id=10 and 1=1 #失敗

通過判斷可發現and和or被過濾
http://site/script?id=10– # 失敗http://site/script?id=10;– #失敗http://site/script?id=10);– #失敗http://site/script?id=10)subquery;– #失敗

你可以用burp的intruder的字典跑,但是仍然失敗。
這里可以用到SQL語句的case when …then … else … end語句
CASE WHEN語句在DB2,ORACLE,SQL SERVER系列,SYBASE等大型資料庫都受到支持,是標準的SQL語句。
可以這樣子理解:CASE… WHEN… THEN …ELSE …END
CASE WHEN 語法有兩種情況:
第一種是CASE 後面不帶表達式的;
CASE WHEN expression THEN 操作1
WHEN expression THEN 操作2
.......
ELSE 操作n
END

第二種是CASE 後面帶表達式的(而此時WHEN 後面的則是該表達式可能的值),通用。
CASE expression
WHEN expression值1 THEN 操作1
WHEN expression值2 THEN 操作2
.......
ELSE 操作n
END
http://host/script?id=11-(case when 1=1 then 1 else 0 end)
用1=1跟1=2測試
http://host/script?id=10 # 當條件為真的時候
http://host/script?id=11 # 當條件為假的時候
可以很明顯的看到返回不同,然後可以判斷注入。那麼怎麼能讓sqlmap去識別呢?
Sqlmap默認是自己尋找注入點的,但是你加上一個*,可以引導他。
語句
sqlmap.py -u http://host/script?id=11-(case when 1=1星號 then 1)

注入最頭痛的就是遇到過濾,sqlmap提供了字元轉換的功能
「–tamper=between」當然自己可以改寫轉換內容,文件在/tamper目錄下。
關於post注入 sqlmap可以用-r參數 載入數據包
sqlmap.py -r post.txt

繼續補充一點: having xor等邏輯符號也可以判斷注入。
TIP2
POST注入
有兩種方法來進行post注入,一種是使用--data參數,將post的key和value用類似GET方式來提交。二是使用-r參數,sqlmap讀取用戶抓到的POST請求包,來進行POST注入檢測。
查看payload
之前一直是加本地代理,然後用burpsuit來看sqlmap的payload,到現在才發現用-v參數就可以實現。一直認為-v實現的只是控制警告,debug信息級別。實際上使用-v 3就可以顯示注入的payload,4,5,6還可以顯示HTTP請求,HTTP響應頭和頁面。
使用google搜索
sqlmap可以測試google搜索結果中的sql注入,很強大的功能吧。使用方法是參數-g。不過感覺實際使用中這個用的還是很少的。
請求延時
在注入過程中請求太頻繁的話可能會被防火牆攔截,這時候--delay參數就起作用了。可以設定兩次HTTP請求間的延時。有的web程序會在多次錯誤訪問後屏蔽所有請求,這樣就導致之後所有的測試無法進行,繞過這個策略可以使用--safe-url,每隔一段時間去訪問一個正常的頁面。
偽靜態頁面
有些web伺服器進行了url rewrite或者網站是偽靜態的,無法直接提供測試參數,這樣子可以使用*來代替要測試的參數。
執行系統命令
當資料庫支持,並且當前用戶有許可權的時候,可以執行系統命令,使用--os-cmd或者--os-shell,具體的講,當可以執行多語句的時候,會嘗試用UDF(MySQL,PostgrepSQL)或者xp_cmdshell(MSSQL)來執行系統命令。不能執行多語句時,仍然會嘗試創建一個webshell來執行語句,這時候就需要web的絕對路徑了。總體來說,成功率偏低,不過個人也有成功的經驗~
測試等級
sqlmap使用--level參數來進行不同全面性的測試,默認為1,不同的參數影響了使用哪些payload,2時會進行cookie注入檢測,3時會進行useragent檢測。

D. sqlmap注入後,獲取到的資料庫很多,表也很多,怎麼知道賬號和密碼在哪個地方

【sqlmap從資料庫中搜索欄位語句】

-D資料庫–-search-Cadmin,password

–dbmsmysql-D–-search-Cadmin,password

在資料庫中搜索欄位admin或者password

E. 利用sqlmap注入時,發現站點對空格進行了過濾,可以使用什麼腳本來繞過

0x00 前言
現在的網路環境往往是WAF/IPS/IDS保護著Web 伺服器等等,這種保護措施往往會過濾擋住我們的SQL注入查詢鏈接,甚至封鎖我們的主機IP,所以這個時候,我們就要考慮怎樣進行繞過,達到注入的目標。因為現在WAF/IPS/IDS都把sqlmap 列入黑名單了,呵呵!但是本文基於sqlmap 進行繞過注入測試,介紹至今仍然實用有效的技巧,以下策略在特定的環境能夠成功繞過,具體是否繞過,請仔細查看輸出的信息。
0x01 確認WAF
首先我們判斷該Web 伺服器是否被WAF/IPS/IDS保護著。這點很容易實現,因為我們在漏掃或者使用專門工具來檢測是否有WAF,這個檢測,在nmap 的NSE,或者WVS的策略或者APPSCAN的策略中都有,我們可以利用這些來判斷。在此我們,也介紹使用sqlmap 進行檢測是否有WAF/IPS/IDS
root@kali:~# sqlmap -u "http://yiliao.kingdee.com/contents.php?id=51&types=4" --thread 10 --identify-waf#首選
root@kali:~# sqlmap -u "http://yiliao.kingdee.com/contents.php?id=51&types=4" --thread 10 --check-waf#備選
0x02 使用參數進行繞過
root@kali:~# sqlmap -u "http://yiliao.kingdee.com/contents.php?id=51&types=4" --random-agent -v 2 #使用任意瀏覽器進行繞過,尤其是在WAF配置不當的時候
root@kali:~# sqlmap -u "http://yiliao.kingdee.com/contents.php?id=51&types=4" --hpp -v 3#使用HTTP 參數污染進行繞過,尤其是在ASP.NET/IIS 平台上
root@kali:~# sqlmap -u "http://yiliao.kingdee.com/contents.php?id=51&types=4" --delay=3.5 --time-sec=60 #使用長的延時來避免觸發WAF的機制,這方式比較耗時
root@kali:~# sqlmap -u "http://yiliao.kingdee.com/contents.php?id=51&types=4" --proxy=211.211.211.211:8080 --proxy-cred=211:985#使用代理進行注入

F. sqlmap的tamper過waf關鍵字過濾 將select變為selecSELECTt的函數是哪一個

但很多時候還是得靜下來分析過濾系統到底過濾了哪些參數,該如何繞過。
sqlmap中的tamper給我們帶來了很多防過濾的腳本,非常實用,可能有的朋友還不知道怎樣才能最有效的利用tamper腳本。
當然使用腳本之前需要確定的就是系統過濾了哪些關鍵字,比如單引號、空格、select、union、admin等等。
所以有的時候我們會發現,注入成功了但是mp不出數據,很可能是select被過濾了等等原因。
如何判斷使用哪個腳本
最簡單的辦法就是在url參數中手工帶入關鍵詞,判斷是否被過濾。
如圖:
直接加個單引號被過濾,說明注入時單引號是沒法用的。

空格、等於號都沒有過濾,成功報錯。

select被過濾。
以此類推,當sqlmap注入出現問題時,比如不出數據,就要檢查對應的關鍵詞是否被過濾。
比如空格被過濾可以使用space2comment.py,過濾系統對大小寫敏感可以使用randomcase.py等等。

G. sqlmap能注入oracle資料庫嗎

完全可以。
sqlmap是一個灰常強大的sql注入檢測與輔助工具,但是由於沒有圖形界面,基本上用起來比較麻煩,導致很多人可能寧願用havij或者是pangolin也不願意麻煩去翻幫助界面,其實真正用起來也就5,6句,也不會太復雜。

H. 請問如何防範window下的網站資料庫被sqlmap竊取

SQL注入是一種代碼注入技術,過去常常用於攻擊數據驅動性的應用,比如將惡意的SQL代碼注入到特定欄位用於實施拖庫攻擊等。SQL注入的成功必須藉助應用程序的安全漏洞,例如用戶輸入沒有經過正確地過濾(針對某些特定字元串)或者沒有特別強調類型的時候,都容易造成異常地執行SQL語句。
SQL注入是網站滲透中最常用的攻擊技術,但是其實SQL注入可以用來攻擊所有的SQL資料庫。在這個指南中我會向你展示在Kali Linux上如何藉助SQLMAP來滲透一個網站(更准確的說應該是資料庫),以及提取出用戶名和密碼信息。

I. 怎麼用sqlmap連接mysql

[1]dbms:代表所使用的資料庫,如我們這里是mysql
[2]user:對應我們資料庫的用戶,如我們這里是root
[3]password:對應我們數據的密碼,如我的伺服器為3erver
[4]dbma_IP:資料庫伺服器對應的ip地址,如我這里為192.168.80.128
[5]dbms_PORT:數據伺服器所使用的埠,不能省略。默認我們寫3306
[6]database_NAME:你要使用的資料庫名,因為mysql一般會有test資料庫,如我這里使用test。假如沒有test,我們可以自己使用create database test;創建一個.

J. sqlmap是怎麼導出資料庫的

輸入命令sqlmap-u+「風險網址」檢測是否存在sql注入漏洞。看到返回了伺服器的類型,web環境,資料庫類型。確定存在漏洞我們開始下一步的注入。根據返回的資料庫類型我們確定資料庫為access資料庫。使用--tables猜解表。猜解完表格後我們進一步猜解表的內容。命令:pythonsqlmap.py-uURL-Tadmin--columns注意暴力破解的線程數最大為10,其他的參數可以直接回車。猜解完表的內容我們可以直接猜解表列的內容。5等待一段時間後,程序工作完畢,查看結果。

閱讀全文

與sqlmap過濾系統資料庫相關的資料

熱點內容
化妝品工廠的污水處理 瀏覽:298
魚缸放鹽放到過濾槽 瀏覽:96
什麼品牌凈化器除甲醛效果最好 瀏覽:901
樹脂三乙醇胺硬度 瀏覽:270
燈達樹脂砂輪 瀏覽:296
泰克馬污水提升器無錫 瀏覽:926
水性熱塑性樹脂耐化性 瀏覽:779
史密斯凈化器怎麼重置濾芯 瀏覽:211
濟源年產18萬噸污水處理劑 瀏覽:328
廁所飲水機漏水什麼情況 瀏覽:127
反滲透凈水器如何接燒水壺 瀏覽:262
飲水機為什麼不過濾水 瀏覽:416
海曙污水管道養護單位 瀏覽:431
霧化吸入加入蒸餾水 瀏覽:1
廈門超標排放污水量處罰辦法 瀏覽:782
伊濱區污水處理廠地址 瀏覽:661
純水機進水電磁閥為什麼24v不到位 瀏覽:790
惠而浦直飲凈水機多少錢 瀏覽:40
鍍鉻後的廢水處理最方便 瀏覽:851
既熱式飲水機怎麼裝前置過濾器 瀏覽:585