歡迎來到Curl的世界

1、Curl 簡介php

curl命令是一個利用URL規則在命令行下工做的文件傳輸工具。它支持文件的上傳和下載,因此是html

綜合傳輸工具,但按傳統,習慣稱curl爲下載工具。做爲一款強力工具,curl支持包括HTTP、程序員

HTTPS、ftp等衆多協議,還支持POST、cookies、認證、從指定偏移處下載部分文件、用戶代理字web

符串、限速、文件大小、進度條等特徵。作網頁處理流程和數據檢索自動化,curl能夠祝一臂之力。瀏覽器

 

2、經常使用的選項安全

 

-I/--head服務器

//只顯示返回的 HTTP 頭部信息cookie

-i/--includecurl

//返回網頁 HTTP 代碼的同時也包含 HTTP 頭部信息輸出xss

-A/--user-agent <agent string>

//User-Agent簡單來講就是客戶使用的操做系統和瀏覽器信息

-e/--referer <URL>

//Referer,就是客戶是從哪一個頁面來到當前頁面的

-H/--header <header>

//一般使用 -H host:www.***.com 來自定義HTTP請求頭部要訪問此服務器上的 www.***.com 這個

主機

--interface <name>

//當你的服務器上有多個 IP 或網卡時,可使用 --interface 來指定使用哪一個接口、IP 地址或者主機

名發送 curl 請求

curl --interface eth0:1 http://www.***.com/

curl --interface 172.16.100.1 http://www.***.com/

-k/--insecure

//https方式鏈接的站點在創建會話時默認是會檢測CA與網站的證書之間的完整性和可靠性,檢查經過後會使用經過證書來

加密傳輸數據,而http方式是直接明文傳輸數據的,因此https是安全的,http是不安全的。在直接curl https鏈接的站點

時是不會獲取到網頁HTTP代碼的。

翻譯:(SSL)此選項明確容許cURL執行「不安全」的SSL鏈接和傳輸。全部的SSL鏈接嘗試採用捆綁默認安裝的

CA證書的安全。這使得全部的鏈接被認爲是「不安全的」失敗,除非使用-k / --insecure 。

-L/--location

//(HTTP / HTTPS)若是服務器報告所請求的網頁已經轉移到一個不一樣的位置(標有位置:標題和3xx響應代碼),此選項

將使curl從新請求新的地方

 

3、實例

 

爲了節省篇幅,省略了返回的HTTP網頁代碼,僅以狀態碼來區分請求是否成功,如200爲成功,301永久跳轉,302臨時跳轉

 

1. 有的程序員會禁止爬蟲或者其它工具對網站進行惡意爬行,因此簡單識別用戶使用的瀏覽器和操

 

做系統標識,這時候使用curl就獲取不到網頁的HTTP代碼了,但咱們能夠指定User-Agent方式來繞

 

過,以下:

 

[root@XssCookies xss]# curl -I -A "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.0)" -k https://iyuns.cc

HTTP/1.1 200 OK

Server: ***

Date: Mon, 13 Feb 2017 17:43:47 GMT

Content-Type: text/html; charset=UTF-8

Connection: keep-alive

Vary: Accept-Encoding

X-Powered-By: PHP/7.0.12

 

其中也用到了-k/--insecure,具體描述看上面的選項解釋

 

[root@XssCookies xss]# curl -I -k https://iyuns.cc

HTTP/1.1 200 OK

Server: ***

Date: Mon, 13 Feb 2017 17:43:23 GMT

Content-Type: text/html; charset=UTF-8

Connection: keep-alive

Vary: Accept-Encoding

X-Powered-By: PHP/7.0.12

 

2. 跟隨網頁跳轉

 

咱們默認直接curl的時候返回的HTTP頭部是這樣子的:

 

[root@XssCookies xss]# curl -I http://www.***.com/

HTTP/1.1 302 Moved Temporarily

Date: Mon, 13 Feb 2017 17:44:46 GMT

Content-Type: text/html; charset=utf-8

Connection: keep-alive

X-Powered-By: PHP/5.6.15

Location: ./web/index.php?

Server: ***

 

其中客戶的站點設置了直接訪問主域名時,自動跳轉到http://www.***.com/web/index.php?這個

 

頁面,但curl自己默認不會自動跳轉而後返回HTTP請求頭和網頁代碼。咱們可使用-L/--location

 

或者指定咱們是從哪一個頁面跳轉過來的,就能夠返回跳轉後的頁面網頁代碼。

 

[root@XssCookies ~]# curl -I -L http://www.***.com/

HTTP/1.1 302 Moved Temporarily

Date: Mon, 13 Feb 2017 18:56:25 GMT

Content-Type: text/html; charset=utf-8

Connection: keep-alive

X-Powered-By: PHP/5.6.15

Location: ./web/index.php?

Server: ***

 

HTTP/1.1 200 OK

Date: Mon, 13 Feb 2017 18:56:25 GMT

Content-Type: text/html; charset=utf-8

Connection: keep-alive

Vary: Accept-Encoding

Vary: Accept-Encoding

X-Powered-By: PHP/5.6.15

Server: ***

 

其中返回的第一個HTTP頭部信息是未跳轉前的主域名請求頭,第二個是跳轉後的頁面返回的請求

 

頭,200狀態碼就表示成功了,也可使用-i來顯示完整的網頁代碼

 

或者指定referer來表明咱們是從主域名跳轉到的http://www.***.com/web/index.php?這個頁面:

 

[root@XssCookies ~]# curl -I http://www.***.com/web/index.php? -e "www.***.com"

HTTP/1.1 200 OK

Date: Mon, 13 Feb 2017 19:31:13 GMT

Content-Type: text/html; charset=utf-8

Connection: keep-alive

Vary: Accept-Encoding

Vary: Accept-Encoding

X-Powered-By: PHP/5.6.15

Server: ***

 

3. 若是一個站有多個A記錄提供服務時(多是CDN),能夠直接指定源IP地址(各類途徑找)或者CDN節點的地址來獲取http頁面代碼

 

[root@XssCookies xss]# curl -I http://*.*.*.*/web/index.php? -e "www.***.com" -H host:www.***.com

HTTP/1.1 200 OK

Server: ***

Date: Mon, 13 Feb 2017 17:46:11 GMT

Content-Type: text/html; charset=utf-8

Connection: keep-alive

Vary: Accept-Encoding

X-Powered-By: PHP/5.6.15

 

*.*.*.* 表示你找到的真實IP地址或者其餘地址(反正只要能提供服務的)

相關文章
相關標籤/搜索