0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

不同的SQLMap命令

我快閉嘴 ? 來(lái)源:菜鳥(niǎo)學(xué)安全 ? 作者:菜鳥(niǎo)學(xué)安全 ? 2022-09-15 09:19 ? 次閱讀

前言

SQLMap是每個(gè)滲透測(cè)試師的必備工具。這是眾多強(qiáng)大的主流工具之一,尤其是在測(cè)試OWASP Top 10中的SQL注入漏洞時(shí)。從掃描SQL注入漏洞到獲取數(shù)據(jù)庫(kù)名字、表和列,以及獲得系統(tǒng)訪問(wèn)權(quán)限,其可被用于多種目的。

在本文中,我們將看到不同的SQLMap命令,在對(duì)不同場(chǎng)景下的SQL注入進(jìn)行利用時(shí)可能會(huì)比較得心應(yīng)手。

可以從如下鏈接下載SQLMap:

Windows

Linux:git clone --depth 1 https://github.com/sqlmapproject/sqlmap.git sqlmap-dev

出于演示目的,我用的是Vulnhub上的這個(gè)虛擬機(jī)

讓我們一起來(lái)看看SQLMap這款工具在GET和POST請(qǐng)求上的基本用法。

GET請(qǐng)求

  • sqlmap -u http://site-to-test.com/test.php?id=1-p id

  • sqlmap -u http://site-to-test.com/test.php?id=1*

    • -u:要掃描的URL

    • -p:要掃描的字段

    • *:要掃描的字段(如果不用-p來(lái)指定的話)

POST請(qǐng)求

我們可以在SQLMap掃描中指定POST請(qǐng)求體中的數(shù)據(jù)。

  • sqlmap -u http://site-to-test.com/admin/index.php–data=”user=admin&password=admin”-p user

  • –data=POST數(shù)據(jù)

a22cd9d2-348e-11ed-ba43-dac502259ad0.png

a277999a-348e-11ed-ba43-dac502259ad0.jpg

另外一種方式是復(fù)制Burp請(qǐng)求到一個(gè)文件里,然后同樣傳給SQLMap。

  • sqlmap –r 請(qǐng)求文件的路徑

a2cde67e-348e-11ed-ba43-dac502259ad0.png

a2fe3ffe-348e-11ed-ba43-dac502259ad0.jpg

讓我們?cè)偕钊氲亓私庖幌耂QLMap的其他選項(xiàng)。

掃描POST登錄頁(yè)面

POST請(qǐng)求的登錄頁(yè)面是通過(guò)cookie頭來(lái)進(jìn)行身份認(rèn)證的,也就是GET或者POST請(qǐng)求時(shí),包含在HTTP頭里的。我們必須給SQLMap提供有效的cookie才能對(duì)登錄頁(yè)面的POST請(qǐng)求進(jìn)行掃描。

  • sqlmap -u http://192.168.202.163/admin/index.php?id=1–cookie=”cookie value

/admin/index.php?id=1 是一個(gè)登錄頁(yè)面的POST請(qǐng)求。

a31b936a-348e-11ed-ba43-dac502259ad0.jpg

  • sqlmap -u http://192.168.202.163/admin/index.php?id=1–user-agent=infosec

  • sqlmap -u http://192.168.202.163/admin/index.php?id=1–referer= http://192.168.202.163/admin/index.php

a366887a-348e-11ed-ba43-dac502259ad0.jpg

除此以外,我們還可以通過(guò)–random-agent選項(xiàng)來(lái)隨機(jī)指定user-agent頭。

a384e34c-348e-11ed-ba43-dac502259ad0.jpg

a3eee6f2-348e-11ed-ba43-dac502259ad0.jpg

爬取

爬?。╟rawl)是一個(gè)非常重要的選項(xiàng),可以讓SQLMap從網(wǎng)站根目錄開(kāi)始爬取,爬取深度可以在命令中指定。

sqlmap -u http://192.168.202.160/–crawl=1

–crawl: 指定爬取深度。(例如:指定值為2表示讓SQLMap最多爬取兩層目錄)

a44002a8-348e-11ed-ba43-dac502259ad0.jpg

如果想排除爬取范圍內(nèi)的任意頁(yè)面,我們可以通過(guò)使用–crawl-exclude參數(shù)。當(dāng)爬取POST型的登錄頁(yè)面時(shí),該選項(xiàng)十分有用。

  • sqlmap -u http://192.168.202.163/ –crawl=3 –cookie=”cookie value” –crawl-exclude=”logout”

該命令可以最多爬取三層目錄,并排除任何存在“l(fā)ogout”(注銷(xiāo))關(guān)鍵字的URL。

a47322fa-348e-11ed-ba43-dac502259ad0.jpg

如下圖所示,SQLMap爬取了網(wǎng)站,但是排除了注銷(xiāo)的URL。

a48d85dc-348e-11ed-ba43-dac502259ad0.jpg

去掉–crawl-exclude選項(xiàng),再運(yùn)行一次同樣的命令:

a4d5ccac-348e-11ed-ba43-dac502259ad0.jpg

如下圖所示,去掉–crawl-exclude選項(xiàng)后,SQLMap爬取了注銷(xiāo)URL。該URL由于注銷(xiāo)會(huì)導(dǎo)致退出當(dāng)前會(huì)話(session),失效的會(huì)話會(huì)導(dǎo)致無(wú)法完成掃描。

a6e83016-348e-11ed-ba43-dac502259ad0.jpg

通過(guò)代理使用SQLMap

我們可以指定一個(gè)代理來(lái)記錄傳遞的請(qǐng)求。如果想通過(guò)Burp這樣的代理工具來(lái)傳遞請(qǐng)求,打開(kāi)Burp Suite并配置其監(jiān)聽(tīng)本機(jī)的8080端口。接著使用如下SQLMap命令:

  • sqlmap -u http://192.168.202.162/cat.php?id=1 -p id–proxy=”http://localhost:8080″

a739a45a-348e-11ed-ba43-dac502259ad0.jpg

a7721588-348e-11ed-ba43-dac502259ad0.jpg

現(xiàn)在想象一下這樣的場(chǎng)景:當(dāng)SQL注入關(guān)鍵字,比如OrderBy和Union,被服務(wù)器端加到黑名單了。對(duì)于這種場(chǎng)景,我們可以通過(guò)駝峰拼寫(xiě)法來(lái)繞過(guò)這類(lèi)限制。用SQLMap將流量轉(zhuǎn)發(fā)到Burp,然后用Burp的“匹配和替換(match and replace)”功能來(lái)繞過(guò)以上限制。

匹配和替換功能可以在Burp的“Proxy”標(biāo)簽下的“Options”標(biāo)簽下找到。

a7b3ad2c-348e-11ed-ba43-dac502259ad0.jpg

這樣就可以檢查請(qǐng)求中是否存在“union”這樣的關(guān)鍵字。如果存在,那么將其替換為“UnIoN”。

在某些網(wǎng)站只能通過(guò)代理服務(wù)器訪問(wèn)的場(chǎng)景下,同樣可以用下面的命令來(lái)指定:

  • sqlmap -u http://192.168.202.162/cat.php?id=1 -p id –proxy=”http://localhost:8080″–proxy-cred=username:password

批(量)處理

批處理(batch)命令適用于非交互的會(huì)話。在掃描的時(shí)候,SQLMap可能會(huì)讓我們提供一些輸入:比如,在用爬取功能的時(shí)候,會(huì)問(wèn)用戶是否想掃描指定的URL。當(dāng)在命令中指定–batch選項(xiàng)時(shí),SQLMap會(huì)用一個(gè)默認(rèn)值來(lái)處理,而不再問(wèn)用戶。

a7ffaaec-348e-11ed-ba43-dac502259ad0.jpg

a81a9500-348e-11ed-ba43-dac502259ad0.jpg

表單

存在表單字段的頁(yè)面URL(比如登錄頁(yè)面)可以通過(guò)–form選項(xiàng)來(lái)解析該頁(yè)面,并引導(dǎo)用戶去測(cè)試指定字段。

a837141e-348e-11ed-ba43-dac502259ad0.jpg

現(xiàn)在,可以通過(guò)–form和–batch選項(xiàng)一起來(lái)高效地測(cè)試存在大量表單字段的頁(yè)面了。因?yàn)檫@樣可以解析該頁(yè)面,并代替用戶自動(dòng)提供輸入來(lái)測(cè)試這些表單字段。

如果想要掃描整個(gè)網(wǎng)站,可以同時(shí)用crawl和form選項(xiàng)。

a88f7dac-348e-11ed-ba43-dac502259ad0.jpg

線程

線程(threads)選項(xiàng)可以讓用戶指定SQLMap發(fā)送的并發(fā)請(qǐng)求數(shù)量,這樣可以減少整體的測(cè)試時(shí)間。不過(guò)別總是保持一個(gè)較高的值,因?yàn)榭赡軙?huì)影響結(jié)果的準(zhǔn)確性。

a8d63760-348e-11ed-ba43-dac502259ad0.jpg

危險(xiǎn)和級(jí)別(Risk andlevel)

危險(xiǎn)(risk)可以指定SQLMap使用的payload類(lèi)型。默認(rèn)情況下值為1,最高可以設(shè)置為3。值為3時(shí),就是最大值,包含了一些嚴(yán)重的SQL查詢。

級(jí)別(level)指定要執(zhí)行的檢查或payload的數(shù)量。值的范圍時(shí)從1到5。最大值為5,掃描時(shí)會(huì)用到大量的payload。

當(dāng)SQLMap使用默認(rèn)設(shè)置無(wú)法掃描注入點(diǎn)時(shí),建議增加risk和level的值。(譯者注:此舉存在風(fēng)險(xiǎn)【risk】)

詳細(xì)信息

假如我們想看看SQLMap發(fā)送的payload,可以用詳細(xì)信息(verbose)參數(shù),其值范圍是從1到6。

a912b546-348e-11ed-ba43-dac502259ad0.png

a93955ca-348e-11ed-ba43-dac502259ad0.jpg

數(shù)據(jù)庫(kù)枚舉

眾所周知,SQLMap主要用于對(duì)SQL注入的利用,一起來(lái)看看這些通過(guò)SQL注入漏洞來(lái)枚舉數(shù)據(jù)庫(kù)的命令。

1. –dbs: 該選項(xiàng)用于枚舉數(shù)據(jù)庫(kù)。

a96e0e50-348e-11ed-ba43-dac502259ad0.jpg

a9a57142-348e-11ed-ba43-dac502259ad0.jpg

2. 現(xiàn)在得到了數(shù)據(jù)庫(kù)名。要獲得“photoblog”數(shù)據(jù)庫(kù)的表,可以執(zhí)行如下命令:

a9e315d8-348e-11ed-ba43-dac502259ad0.jpg

aa0b1fb0-348e-11ed-ba43-dac502259ad0.jpg

3. 要獲得“users”表中的字段細(xì)節(jié),可以執(zhí)行如下命令:

aa2e280c-348e-11ed-ba43-dac502259ad0.jpg

aa4e0a64-348e-11ed-ba43-dac502259ad0.jpg

4. 要轉(zhuǎn)儲(chǔ)(dump)“users”這張表中的數(shù)據(jù),可以用–dump命令:

aab7297c-348e-11ed-ba43-dac502259ad0.jpg

ab06501a-348e-11ed-ba43-dac502259ad0.jpg

5. 查看當(dāng)前數(shù)據(jù)庫(kù)用戶:

ab8ce7ec-348e-11ed-ba43-dac502259ad0.jpg

abb5881e-348e-11ed-ba43-dac502259ad0.jpg

6. 查看當(dāng)前數(shù)據(jù)庫(kù)名:

abf68b70-348e-11ed-ba43-dac502259ad0.jpg

ac13ccee-348e-11ed-ba43-dac502259ad0.jpg

7. 查看權(quán)限(privileges)、角色(roles),并查看當(dāng)前數(shù)據(jù)庫(kù)用戶是否是數(shù)據(jù)庫(kù)管理員:

ac3b4030-348e-11ed-ba43-dac502259ad0.jpg

ac58dab4-348e-11ed-ba43-dac502259ad0.jpg

用tamper腳本繞過(guò)WAF

很多時(shí)候,我們會(huì)遇到網(wǎng)站被WAF(Web Application Firewall)保護(hù)的場(chǎng)景,我們可以用下面的命令來(lái)檢查目標(biāo)網(wǎng)站是否被WAF保護(hù):

  • –identify-waf (譯者注:新版本中已移除)

識(shí)別出WAF后,我們就可以用tamper腳本來(lái)進(jìn)行繞過(guò)。tamper腳本可以修改請(qǐng)求來(lái)繞過(guò)WAF檢測(cè)。這些腳本可以在/usr/share/sqlmap/tmper/ 目錄下找到。

ac79dfd4-348e-11ed-ba43-dac502259ad0.jpg

ac98ad7e-348e-11ed-ba43-dac502259ad0.jpg

執(zhí)行系統(tǒng)命令

如果當(dāng)前數(shù)據(jù)庫(kù)用戶擁有DBA權(quán)限,我們就可以使用如下選項(xiàng)來(lái)執(zhí)行操作系統(tǒng)級(jí)別的命令:

  • 對(duì)于Linux目標(biāo)服務(wù)器:

  • sqlmap -u http://192.168.202.162/cat.php?id=1–os-shell

  • 對(duì)于Windows目標(biāo)服務(wù)器:

  • sqlmap -u http://192.168.202.162/cat.php?id=1–os-cmd cmd命令

執(zhí)行SQL查詢

我們還可以用下面的命令在數(shù)據(jù)庫(kù)中執(zhí)行SQL語(yǔ)句:

  • sqlmap -u 192.168.202.164/cat.php?id=2–sql-shell

acc4bfb8-348e-11ed-ba43-dac502259ad0.png

aced9762-348e-11ed-ba43-dac502259ad0.jpg

其他選項(xiàng)

一些其他選項(xiàng)如下:

1. 掃描一些被類(lèi)似Basic、NTLM和Digest這樣的HTTP身份認(rèn)證保護(hù)的頁(yè)面:

  • sqlmap -u http://example.com/admin.aspx –auth-type Basic –auth-cred “admin:admin”

2. 掃描被基于密鑰認(rèn)證保護(hù)的頁(yè)面:

  • sqlmap -u http://example.com/admin.aspx–auth-file=PEM證書(shū)或私鑰文件路徑

3. 隨機(jī)化發(fā)起攻擊的IP地址(在比如WAF檢測(cè),或者為了增加被溯源的難度,隱藏攻擊來(lái)源等場(chǎng)景下很有用)。

使用默認(rèn)的Tor(洋蔥路由)匿名網(wǎng)絡(luò):

  • sqlmap -u http://example.com/admin.aspx–tor

指定Tor的端口:

  • sqlmap -u http://example.com/admin.aspx–tor-port=tor代理端口

4. 如果需要在每次HTTP請(qǐng)求之間延時(shí):

  • sqlmap -u http://example.com/admin.aspx–delay=1#延時(shí)1秒

5. 如果頁(yè)面被CSRF token保護(hù),同樣可以用下面的命令:

  • sqlmap -u http://example.com/admin.aspx–csrf-token=csrf token

6. 在二階注入中,SQL注入的payload會(huì)被存儲(chǔ)在目標(biāo)網(wǎng)站的數(shù)據(jù)庫(kù)中,之后在訪問(wèn)其他頁(yè)面的時(shí)候被執(zhí)行。我們指定一個(gè)SQLMap用來(lái)請(qǐng)求的已被注入的URL。然后讓SQLMap用如下命令來(lái)注入:

  • sqlmap -r /root/Desktop/Burp.txt–second-order“http://target/vulnerbalepage.php”

Burp.txt是包含將要用于測(cè)試的文件,其中包含注入點(diǎn)。

  • –second-order “URL” 指定的是每次注入后SQLMap去訪問(wèn)的URL。

總結(jié)

在檢測(cè)和利用SQL注入漏洞方面,SQLMap是一個(gè)不錯(cuò)的工具。其支持如此多的選項(xiàng),開(kāi)關(guān)以及可以創(chuàng)建并使用自定義腳本,讓它從眾多檢測(cè)SQL注入漏洞的開(kāi)源工具中脫穎而出。

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11211

    瀏覽量

    208721
  • SQL
    SQL
    +關(guān)注

    關(guān)注

    1

    文章

    753

    瀏覽量

    44032
  • 命令
    +關(guān)注

    關(guān)注

    5

    文章

    678

    瀏覽量

    21965

原文標(biāo)題:一些重要的SQLMap命令

文章出處:【微信號(hào):菜鳥(niǎo)學(xué)安全,微信公眾號(hào):菜鳥(niǎo)學(xué)安全】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Linux find命令詳解

    find 命令是我們?nèi)粘9ぷ髦斜容^常用的Linux命令。全面的掌握這個(gè)命令可以使很多操作達(dá)到事半功倍的效果。如果對(duì)find命令有以下這些疑惑,本文都能幫你解決。
    發(fā)表于 11-30 10:11 ?1559次閱讀

    sqlmap的安裝與使用

    44sqlmap的安裝與使用
    發(fā)表于 04-20 10:10

    cad命令快捷鍵_cad命令大全

    以下文章為CAD命令大全,全文分為二個(gè)部份,第一部份是總的CAD命令,第二部份是CAD2007命令大全。 一、cad命令大全 cad命令-材
    發(fā)表于 10-18 17:34 ?2.1w次閱讀

    linnux命令參考卡片

    linnux命令參考卡片,常用的幾種命令解釋。
    發(fā)表于 12-14 15:52 ?0次下載

    dos是什么意思_dos命令是什么?

    dos命令就是機(jī)器語(yǔ)言,通過(guò)輸入對(duì)應(yīng)的dos命令,讓電腦運(yùn)行相關(guān)操作。DOS命令,是DOS操作系統(tǒng)的命令,是一種面向磁盤(pán)的操作命令,主要包括
    發(fā)表于 01-17 14:45 ?2.1w次閱讀
    dos是什么意思_dos<b class='flag-5'>命令</b>是什么?

    linux的Shell命令和相關(guān)的命令

    如果后臺(tái)中有多個(gè)命令,可以用 fg %jobnumber將選中的命令調(diào)出,%jobnumber是通過(guò)jobs命令查到的后臺(tái)正在執(zhí)行的命令的序號(hào)(不是pid)
    的頭像 發(fā)表于 10-03 13:14 ?2455次閱讀

    linux有哪些常用的命令

     Linux的命令非常之多,分為內(nèi)部命令和外部命令。
    發(fā)表于 02-27 08:00 ?4次下載
    linux有哪些常用的<b class='flag-5'>命令</b>

    用于刪除的命令:groupdel和groupadd命令

    二、groupdel 1.命令簡(jiǎn)介 groupdel(group delete)命令是系統(tǒng)管理員命令,用于刪除一個(gè)組。 groupdel 命令用于刪除指定的工作組,本
    的頭像 發(fā)表于 01-11 10:44 ?2677次閱讀

    Shell內(nèi)建命令:trap命令

    1.命令簡(jiǎn)介 trap 命令是 Shell 內(nèi)建命令,用于指定在接收到信號(hào)后將要采取的動(dòng)作。常見(jiàn)的用途是在腳本程序被中斷時(shí)完成清理工作。 2.命令格式 trap ?[-lp]?[ARG
    的頭像 發(fā)表于 02-09 18:19 ?5940次閱讀
    Shell內(nèi)建<b class='flag-5'>命令</b>:trap<b class='flag-5'>命令</b>

    如何使用Linux xargs命令

    `xargs`命令允許您從標(biāo)準(zhǔn)輸入或者文件生成命令的參數(shù)并命令。通常`xargs`命令通過(guò)管道與其他命令組合使用。
    的頭像 發(fā)表于 12-02 17:42 ?2066次閱讀

    如何使用sudo命令以及選項(xiàng)

    sudo命令允許您以其他用戶身份運(yùn)行命令與程序,默認(rèn)是root用戶。如果您是個(gè)命令行用戶,那么sudo是您將經(jīng)常使用的命令之一。
    的頭像 發(fā)表于 12-09 17:47 ?5025次閱讀

    Sqlmap簡(jiǎn)介與使用

    白晝安全 一、Sqlmap簡(jiǎn)介與使用 當(dāng)我們明白sql注入的原理,滲透過(guò)程似乎很簡(jiǎn)單。但事實(shí)上,在實(shí)際的滲透當(dāng)中,漏洞注入并非僅僅只是通過(guò)簡(jiǎn)單的一兩次嘗試就能夠得到測(cè)試人員想要的答案。很多時(shí)候,它
    的頭像 發(fā)表于 01-14 11:24 ?853次閱讀

    淺析Linux精致的命令

    這只是一小部分常用的Linux命令,Linux有很多命令可以使用。建議通過(guò)man命令來(lái)查看命令的使用方法,例如:man cd
    的頭像 發(fā)表于 04-24 16:28 ?1514次閱讀

    shell命令和linux命令一樣嗎

    Shell命令和Linux命令并不完全一樣。 首先,Shell是一種命令行解釋器,它是用來(lái)解釋和執(zhí)行用戶輸入的命令的。Shell既是一種命令
    的頭像 發(fā)表于 11-08 10:51 ?2702次閱讀

    linux重啟命令有哪些

    Linux是一種自由和開(kāi)放源代碼的操作系統(tǒng),被廣泛應(yīng)用于服務(wù)器和嵌入式設(shè)備。在Linux中,有多種命令用于重啟系統(tǒng)。在本文中,我們將詳細(xì)介紹常用的Linux重啟命令并解釋每個(gè)命令的用途
    的頭像 發(fā)表于 11-17 09:49 ?1945次閱讀