3.3 SqlMap用法—請求
這些選項可用于指定如何連接到目標URL。
3.3.1.HTTP方法
選項: --method
sqlmap自動檢測將在HTTP請求中使用的正確HTTP方法。但是,在某些情況下,需要強制使用PUT自動機未使用的特定HTTP方法(例如)。使用此選項(例如--method=PUT)是可能的。
3.3.2.HTTP數據
選項: --data
默認情況下,用于執行HTTP請求的HTTP方法是GET,但是您可以通過提供要在POST請求中發送的數據,將其隱式更改為POST。這些數據(即那些參數)將針對SQL注入以及任何提供的GET參數進行測試。
例如:
$ python sqlmap.py -u "http://www.target.com/vuln.php" --data="id=1" -f --banne
r --dbs --users
3.3.3.參數分割符
選項: --param-del
在某些情況下,&需要覆蓋默認參數定界符(例如,GET和POST數據中的參數),以使sqlmap能夠正確拆分和分別處理每個參數。
例如:
$ python sqlmap.py -u "http://www.target.com/vuln.php" --data="query=foobar;id=
1" --param-del=";" -f --banner --dbs --users
3.3.4.HTTP Cookie頭
選項和開關:--cookie,--cookie-del,--load-cookies和--drop-set-cookie
這些選項和開關可以在兩種情況下使用:
- 該Web應用程序需要基于cookie進行身份驗證,并且您擁有此類數據。
- 您想檢測和利用對此類標頭值的SQL注入。
不論哪種原因,您都需要發送帶有sqlmap請求的cookie,要執行的步驟如下:
- 使用您喜歡的瀏覽器登錄到應用程序。
- 從瀏覽器的首選項或HTTP代理屏幕中獲取HTTP Cookie,然后將其復制到剪貼板。
- 返回您的Shell并通過將剪貼板粘貼為option的值來運行sqlmap
--cookie。
注意,HTTP Cookie標頭值通常是由分離的;字符,不通過&。sqlmap也可以將它們識別為單獨的集合parameter=value,以及GET和POST參數。如果分隔符不是分隔符,則;可以使用option指定--cookie-del。
如果在通信過程中的任何時間,Web應用程序都響應Set-Cookie標頭,則sqlmap將自動在所有其他HTTP請求中將其值用作Cookie標頭。sqlmap還將自動測試這些值以進行SQL注入。可以通過提供開關來避免這種情況--drop-set-cookie-sqlmap將忽略任何即將到來的Set-Cookie標頭。
反之亦然,如果您提供Cookie帶有選項的HTTP 標頭,--cookie并且目標URL Set-Cookie隨時發送HTTP 標頭,則sqlmap會詢問您用于以下HTTP請求的cookie組。
還有一個選項--load-cookies可用于提供包含Netscape / wget格式的cookie的特殊文件。
請注意,Cookie如果--level設置為2或更高,還將針對SQL注入測試HTTP 標頭。請閱讀下面的詳細信息。
3.3.5.HTTP User-Agent頭
選項和開關:--user-agent和--random-agent
默認情況下,sqlmap使用以下User-Agent標頭值執行HTTP請求:
sqlmap/1.0-dev-xxxxxxx (http://sqlmap.org)
但是,可以--user-agent通過提供自定義User-Agent作為選項的參數來偽造該選項。
此外,通過設置開關--random-agent,SqlMap的將隨機選擇一個User-Agent從./txt/user-agents.txt文本文件,并使用它的會話中的所有HTTP請求。
一些站點執行服務器端對HTTP User-Agent標頭值的檢查,如果User-Agent未提供有效值,該值不是預期值或Web應用程序防火墻或類似的入侵防御系統將其列入黑名單,則HTTP響應將失敗。在這種情況下,sqlmap將向您顯示一條消息,如下所示:
[hh:mm:20] [ERROR] the target URL responded with an unknown HTTP status code, try to
force the HTTP User-Agent header with option --user-agent or --random-agent
請注意,User-Agent如果--level設置為3或更高,還將針對SQL注入測試HTTP 標頭。請閱讀下面的詳細信息。
3.3.6.HTTP Host頭
選項: --host
您可以手動設置HTTP Host標頭值。默認情況下,HTTP Host標頭是從提供的目標URL解析的。
請注意,如果將HTTP Host標頭--level設置為5,還將針對SQL注入測試HTTP 標頭。請閱讀下面的詳細信息。
3.3.7.HTTP Referer頭
選項: --referer
可以偽造HTTP Referer標頭值。默認情況下,沒有 HTTP Referer標頭在HTTP請求發送,如果沒有明確設定。
請注意,Referer如果--level設置為3或更高,還將針對SQL注入測試HTTP 標頭。請閱讀下面的詳細信息。
3.3.8.額外的HTTP標頭
選項: --headers
通過設置option可以提供額外的HTTP標頭--headers。每個標頭必須用換行符分隔,從配置INI文件中提供標頭要容易得多。您可以查看sqlmap.conf這種情況的樣本文件。
針對MySQL目標的示例:
$ python sqlmap.py -u "http://192.168.21.128/sqlmap/mysql/get_int.php?id=1" -z
"ign,flu,bat,tec=E" --headers="Host:www.target.com\nUser-agent:Firefox 1.0" -v 5
[...]
[xx:xx:44] [TRAFFIC OUT] HTTP request [#5]:
GET /sqlmap/mysql/get_int.php?id=1%20AND%20%28SELECT%209351%20FROM%28SELECT%20C
OUNT%28%2A%29%2CCONCAT%280x3a6161733a%2C%28SELECT%20%28CASE%20WHEN%20%285473%20
%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%
20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2
0%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20
%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%
20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2
0%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20
%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%
20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2
0%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20
%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3D%20%20%20%20%20%20%20%
20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2
0%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20
%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%
20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2
0%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20
%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%
20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2
0%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20
%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%
20%20%20%20%20%20%20%20%20%20%20%205473%29%20THEN%201%20ELSE%200%20END%29%29%2C
0x3a6c666d3a%2CFLOOR%28RAND%280%29%2A2%29%29x%20FROM%20INFORMATION_SCHEMA.CHARA
CTER_SETS%20GROUP%20BY%20x%29a%
29 HTTP/1.1
Host: www.target.com
Accept-encoding: gzip,deflate
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
User-agent: Firefox 1.0
Connection: close
[...]
3.3.9.HTTP協議認證
選項:--auth-type和--auth-cred
這些選項可用于指定實現哪個HTTP協議身份驗證后端Web服務器以及將用于執行對目標應用程序的所有HTTP請求的有效憑據。
支持的三種HTTP協議身份驗證機制是:
BasicDigestNTLM
憑據的語法為username:password。
有效語法示例:
$ python sqlmap.py -u "http://192.168.136.131/sqlmap/mysql/basic/get_int.php?id
=1" --auth-type Basic --auth-cred "testuser:testpass"
3.3.10.HTTP協議私鑰認證
選項: --auth-file
如果Web服務器需要適當的客戶端證書和用于身份驗證的私鑰,則應使用此選項。提供的值應該是key_file包含您的證書和私鑰的PEM格式。
key_file.txt與兼容的生成示例--auth-file:
$ openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout auth_file.key -out auth_file.pem &&
cat auth_file.key auth_file.pem > auth_file.txt && cat auth_file.txt
Generating a 2048 bit RSA private key
.........+++
...........+++
writing new private key to 'auth_file.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:
State or Province Name (full name) [Some-State]:
Locality Name (eg, city) []:
Organization Name (eg, company) [Internet Widgits Pty Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:
Email Address []:
-----BEGIN PRIVATE KEY-----
MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQCWM28J1ua2DINf
VLU28oeJwQidL9vTRoGJR5pfBU6Mhu33Cv6RuVEJAfMWEKYDSbqbrEyy1zUiNTcG
mEd026Peq0SPRvsKsVb6K+EHVF3r+6ExXHEctPRbh2GIzi2kCQMkdHDg+DhmieQ9
9Haxk9IREJZTo2vC1ohvM5M/yubw4iwgMlDaW+4s82OgOcCLjewbPLFZU5gMV+8W
XLKUttUYwV79duPbEvG9S1soNFHhu/MOcNiKJpH2zSegd9Dk5/OJRGX5xEiv7AyL
4shQLpAqn5kuZcm2K+ib/4x/Rw2yT1Slh2tQIi8RcwlYyycOrSqvhW7vvdqkblbY
mQQyR2ChAgMBAAECggEBAIqvMveC1cOCCksbi7cQeNVYxvtcFT0e/LwkwQS7gat/
anmQTT2APrJyemEFPkQK76KNlMQMsaLEP+p28IOVydjvin5Aq8tTs1uK6Fw8Kfya
elt5X3eCHZ3lgskuljW/nIcsfI08o9cJuxT5hB6yvmPDTQos+nMMYy1KEcv1LQd8
Y+QAmVQqMF5Nyf8Q6op6hWZIIJY5NDbRE0zYzhGcHWg2798Dx1sO0HT6TD8cNP8H
AVp/V21tzpmFpe0A7NajgYEjkij6fg+6mG0j0WZdWymYXDeiTdDpwzs/SPRevBLn
Okp/6vqtdekMeYL591MNBl8GRZpJW9gNLRX7vQ6YYAECgYEAxGV9e85GpLUd/uUb
1MvGajd+HtN/uoWH1ySG34vi3q/dDKBehry2yoDUosxXf9vbH0IrvaXnO8yXGflS
wb2TELLezGWbw6kPaw2XIgL4elO5TPh2rNJwz1wOhv3FT2XSGJbXx/CED3mL7MGs
qwRU/bRrNV7RmzV2veThlLCLjZECgYEAw8jm7vOzQQnqEjs0wlfJmzOyFqilYvEP
8v7HxDv1M7e7M0TqLECET9VlQE5spGuzEWN7/iMtE8xxnz2n/vGnGAV8qv1LJYrA
TWQMTIC6V9/jKM8wNOfT7Eh1rJ1cty87yokXpy/cdmkv7yxb1b2zuBk8/1nlYqA0
5uqb345eWhECgYEAmoXv0TVfR8BpNWA2IZujJXc7+C0YVj0xwAixRbneaq+cEI8t
UH2ypGnw45Y7UhI9ub5qg/DAmsBCMuGER4NM7tqNiex4Pd4Kj4RF4TDNKBIvvWvQ
k/GPaNdZZsTMNcg7IbWtWVbX0QUlHsbTgEsMRAFsSLWt3ZyXLJmlE0REyMECgYEA
oCqEscrwRC7GLK/+01ZZ+fvqnxrMYgrvj0zbRDAAwpR2MtUX9ae6Fk1vDZKa0k/B
KGKIlzlTsTS5ZxpbivdKSR6EBKY+ibHe6/EDFrrgtu7TuRj2SPG2rz//9Hyv0rRz
Z5eLoBxJcR1QN4vEfTE6C0uqWQPD4lFJtfcMGXEwwuECgYAK+4gwPBlrKClrRtDc
7Fnq8RLYeZRbM5WEmTHfRnlYylniMsj2K20H8ln8pdOqCE4iJn0SezIQIaAtcwMP
WQt15kgJgLwM/uBtqDeWRpTEotVMFXQbZImobjpXUhTqu0NWBwbypM/zarfRWPJ4
fJkrlA16caVj3qGaX1lkm06OAA==
-----END PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
MIIDXTCCAkWgAwIBAgIJALTHPlkIs/+KMA0GCSqGSIb3DQEBCwUAMEUxCzAJBgNV
BAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRlcm5ldCBX
aWRnaXRzIFB0eSBMdGQwHhcNMTgwODIyMDc0NTQxWhcNMTkwODIyMDc0NTQxWjBF
MQswCQYDVQQGEwJBVTETMBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UECgwYSW50
ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
CgKCAQEAljNvCdbmtgyDX1S1NvKHicEInS/b00aBiUeaXwVOjIbt9wr+kblRCQHz
FhCmA0m6m6xMstc1IjU3BphHdNuj3qtEj0b7CrFW+ivhB1Rd6/uhMVxxHLT0W4dh
iM4tpAkDJHRw4Pg4ZonkPfR2sZPSERCWU6NrwtaIbzOTP8rm8OIsIDJQ2lvuLPNj
oDnAi43sGzyxWVOYDFfvFlyylLbVGMFe/Xbj2xLxvUtbKDRR4bvzDnDYiiaR9s0n
oHfQ5OfziURl+cRIr+wMi+LIUC6QKp+ZLmXJtivom/+Mf0cNsk9UpYdrUCIvEXMJ
WMsnDq0qr4Vu773apG5W2JkEMkdgoQIDAQABo1AwTjAdBgNVHQ4EFgQUVvHI/2qF
kmRCEWlWB+ZvJzWTnUkwHwYDVR0jBBgwFoAUVvHI/2qFkmRCEWlWB+ZvJzWTnUkw
DAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAQEAg5tmkM75/NEEymu0ublj
c2R1/ZxwbKMjg98KxLqGFJbPVRG0qgIy+uc+Gvh6FEgPF22i4L9DROfuDQW3YSJ6
x3JnJxLsU+jjXxtN7hNwoQziQkicKr0y47TjqOKLlBlKTbdnr74nJXSYQhi4qEFE
qgrUG7ScitgLvcf2sDVf9L2SUsH5iRK+HlgYEtSKhUl5SkLapcUUF+GmectUOkm7
m7Z8gelenVUerLojnQL2avKD07hWTTGkgX2PV8hdun0WIvBLWAcJN+6T9sdakJZZ
qJjFQBXjcxwgVe0vB0vJmqa5lj9OymQnBMjp+3zpUtDJNH2M1qySbU6tGEX1wsW/
VA==
-----END CERTIFICATE-----
3.3.11.忽略(有問題的)HTTP錯誤代碼
選項 --ignore-code
如果您要測試的站點偶爾返回導致常規sqlmap運行出現問題的HTTP錯誤代碼(例如401(未經授權)),而您想忽略它并繼續進行測試,則可以使用option --ignore-code
3.3.12.HTTP(S)代理
選項和開關:--proxy,--proxy-cred,--proxy-file和--ignore-proxy
可以提供HTTP(S)代理地址,以通過HTTP(S)請求通過option將其傳遞到目標URL --proxy。HTTP(S)代理值的語法為http://url:port。
如果HTTP(S)代理需要身份驗證,則可以將格式的憑據提供username:password給option --proxy-cred。
如果您要使用(一次性)代理列表,在出現任何連接問題(例如,入侵IP地址--proxy-file被阻止)時跳至下一個代理,可以通過提供包含大量代理列表的文件的文件名來使用該選項。
開關--ignore-proxy,當你想要忽略一套全系統HTTP(S)代理服務器設置進行針對局域網的目標部分的SqlMap應該被使用。
3.3.13.Tor匿名網絡
開關和選項:--tor,--tor-port,--tor-type和--check-tor
如果出于任何原因需要保持匿名,而不是通過單個預定義的HTTP(S)代理服務器傳遞,則可以按照Tor安裝指南中的說明在計算機上配置Tor客戶端和Privoxy(或類似產品)。然后,您可以使用開關,并且sqlmap會嘗試自動設置Tor代理連接設置。--tor
如果您想手動設置使用的Tor代理的類型和端口,則可以使用選項--tor-type和--tor-port(例如--tor-type=SOCKS5 --tor-port 9050)來完成。
強烈建議您--check-tor偶爾使用以確保一切設置正確。在某些情況下,Tor捆綁包(例如Vidalia)配置錯誤(或重置先前設置的配置)會給您一種匿名感。使用此開關,sqlmap將通過向官員發送單個請求來檢查一切是否正常,您是否正在使用Tor?在任何目標請求之前的頁面。萬一檢查失敗,sqlmap將警告您并突然退出。
3.3.14.每個HTTP請求之間的延遲
選項: --delay
可以指定每個HTTP(S)請求之間保留的秒數。有效值為浮點型,例如0.5半秒。默認情況下,不設置延遲。
3.3.15.超時連接之前等待的秒數
選項: --timeout
在考慮HTTP(S)請求超時之前,可以指定等待的秒數。有效值為浮點型,例如10.5表示十秒半。默認情況下,設置為30秒。
3.3.16.HTTP連接超時時的最大重試次數
選項: --retries
HTTP(S)連接超時時,可以指定最大重試次數。默認情況下,它最多重試3次。
3.3.17.隨機更改給定參數的值
選項: --randomize
可以指定要在每個請求期間隨機更改其值的參數名稱。長度和類型將根據提供的原始值保留。
3.3.18.使用正則表達式從提供的代理日志中過濾目標
選項: --scope
-l您可以使用有效的Python正則表達式指定用于過濾所需主機的正則表達式,而不是使用從提供的日志中解析的所有主機(帶有option)。
有效語法示例:
$ python sqlmap.py -l burp.log --scope="(www)?\.target\.(com|net|org)"
3.3.19.避免過多的請求失敗后會話被破壞
選項:--safe-url,--safe-post,--safe-req和--safe-freq
如果執行一定數量的不成功請求,則介于兩者之間的Web應用程序或檢查技術有時會破壞會話。這可能在sqlmap的檢測階段或利用任何一種盲目SQL注入類型時發生。原因是SQL有效負載不一定返回輸出,因此可能向應用程序會話管理或檢查技術發出信號。
要繞過目標設置的限制,可以提供任何(或組合)選項:
--safe-url:測試期間經常訪問的URL地址。--safe-post:HTTP POST數據發送到給定的安全URL地址。--safe-req:從文件加載并使用安全的HTTP請求。--safe-freq:測試兩次訪問給定安全位置之間的請求。
這樣,sqlmap將在每個預定義數量的請求中訪問某個安全 URL,而無需對其進行任何類型的注入。
3.3.20.參數值的URL編碼
開關: --skip-urlencode
根據參數位置(例如GET),其值可以默認為URL編碼。在某些情況下,后端Web服務器不遵循RFC標準,并要求值以其原始非編碼形式發送。使用--skip-urlencode這些類型的案件。
SqlMap中文版使用教程
推薦文章: