[指令日記] 004 深入探討 cURL:從 HTTP 請求方法到資安應用

🧪 cURL 新手指南:一邊學習,一邊實作!

cURL 是一個非常實用的工具,不論你是剛開始學寫程式,還是準備踏入資安領域,都一定會遇到它。

這篇文章會從「cURL 是什麼」開始講起,帶你了解它的各種用途、常見的參數,還會告訴你為什麼它在資安測試中非常關鍵。搭配實際網址 https://lab.feifei.tw/test_for_curl.php,讓你可以馬上動手試試看!


🔰 1. cURL 是什麼?

cURL 是一個可以透過指令列發送網路請求的工具。它可以與多種協定互動(例如 HTTP、HTTPS、FTP…),功能強大,卻又非常簡單。

你可以用它做很多事:

  • 發送 API 請求
  • 測試網站是否有正常回應
  • 模擬表單送出
  • 上傳或下載檔案

對開發者來說,它是日常工具;對資安人員來說,它是滲透測試的入門利器!


🧩 2. 哪些時候會用到 cURL?

這裡是幾個最常見的使用情境:

  1. 測 API 接口
    確認伺服器有正確回應資料與狀態碼。
  2. 網站監控
    可配合排程工具定時檢查網站是否活著。
  3. 模擬各種 HTTP 方法
    GETPOSTPUTDELETE 等等。
  4. 測試表單或檔案上傳
    開發上很常用。
  5. 資安測試
    看伺服器是否不小心開放了 TRACEOPTIONS 等敏感方法。

🔐 3. 為什麼資安人員要會用 cURL?

cURL 在資安檢測中非常有用,因為你可以精準控制每個請求的細節。例如:

  • 測試是否開放危險方法
    例如 DELETEPUT,可能讓駭客直接刪資料。
  • 觀察網站標頭資訊
    像是伺服器類型、是否支援 HTTPS 強制等。
  • 模擬邊界行為
    用奇怪參數測試伺服器的容錯能力,看能不能發現漏洞。

總之,學會 cURL,你就能用「最直接的方式」和伺服器對話!


🔧 4. 各種參數下會用什麼 HTTP 方法?

很多人以為 curl 只會送 GET,其實它很聰明,會根據你加的參數自動選擇最適合的方法。

讓我們一邊看說明,一邊搭配 https://lab.feifei.tw/test_for_curl.php 這個測試網址操作看看吧!


✅ 預設情況:GET

curl https://lab.feifei.tw/test_for_curl.php

沒加參數時就是最單純的 GET,直接抓網頁內容。

curl-GET


📄 -I:使用 HEAD,只抓標頭

curl -I https://lab.feifei.tw/test_for_curl.php

這個只會顯示標頭(Header),不會有內容。常用來看網站狀態。

curl-I


📤 -d--data:變成 POST

curl -d "name=Phoebe&age=18" https://lab.feifei.tw/test_for_curl.php

有加 -d,cURL 就會用 POST,把資料當成表單送出去。

curl-post


-X POST:強制用 POST(不帶資料)

curl -X POST https://lab.feifei.tw/test_for_curl.php

只是改成 POST,但沒有資料。如果要送資料,記得要加 -d


🧱 -X PUT / -X DELETE:手動指定方法

curl -X PUT -d "name=Phoebe" https://lab.feifei.tw/test_for_curl.php
curl -X DELETE https://lab.feifei.tw/test_for_curl.php?id=123

這兩個方法在 API 開發、測試中非常常見。


📁 --upload-file-T:自動用 PUT 上傳檔案

curl -T ./file.txt https://lab.feifei.tw/test_for_curl.php

模擬檔案上傳,常見於 RESTful API。


📎 -F--form:POST 且支援多部分表單

curl -F "[email protected]" -F "name=Phoebe" https://lab.feifei.tw/test_for_curl.php

這就是模擬像網頁表單那種帶檔案的 POST 請求。


🧪 -X OPTIONS-X TRACE:資安用途

curl -X OPTIONS https://lab.feifei.tw/test_for_curl.php
curl -X TRACE -d "hello" https://lab.feifei.tw/test_for_curl.php
  • OPTIONS:看伺服器支援哪些方法。
  • TRACE:讓伺服器「回顯」你送的請求。容易被拿來做攻擊,因此不少網站會禁用。

🧠 常見參數與對應方法總覽:

使用方式 實際 HTTP 方法 用途說明
curl URL GET 預設抓內容
-I HEAD 只抓標頭
-d / --data POST 傳送表單資料
-T / --upload-file PUT 上傳檔案
-F / --form POST 傳送多部分表單(含檔案)
-X POST POST 指定使用 POST,不送資料
-X DELETE DELETE 測試刪除 API
-X OPTIONS OPTIONS 測試支援方法
-X TRACE TRACE 測試伺服器是否回顯請求內容

🔍 5. -I vs -X GET:看起來一樣,其實不一樣!

這是一個常見迷思,我們來解釋清楚 👇

🔸 -I 預設就是 HEAD 方法

curl -I https://lab.feifei.tw/test_for_curl.php

只會要求伺服器回傳標頭,不含任何內容。如果伺服器沒支援 HEAD,會回傳錯誤(如 405)。


🔸 -X GET 是指定 GET 請求

curl -X GET https://lab.feifei.tw/test_for_curl.php

這就會回傳完整內容,包含你要的資料。


❓如果 -I -X GET 同時用會怎樣?

curl -I -X GET https://lab.feifei.tw/test_for_curl.php

雖然實際用的是 GET 方法,但因為 -I 的關係,你只會看到標頭,不會看到內容

這是因為:

  • -X GET 控制「請求方法」
  • -I 控制「顯示結果」

看起來像是 HEAD,其實是 GET


✅ 總結:學會 cURL,你能做更多事!

  • 🔍 能快速測 API、Debug 網站
  • 🔐 能進行基本資安測試
  • 🧠 能理解請求與伺服器行為

🎯 立即練習吧!

打開終端機,針對這個網址動手操作:

https://lab.feifei.tw/test_for_curl.php

想知道伺服器收到的內容嗎?這支頁面會直接顯示你發出的請求,讓你清楚看到 HTTP 方法、參數、Header 等資訊!


🧪 推薦挑戰:

  • 試著用 -X PUT 傳資料
  • 看看 -F 傳檔案的差別
  • 測試 TRACE 回傳的內容
  • 搭配 -H 加自訂標頭(如 Authorization)

如果你學會這篇教學內容,就代表你已經踏入了 cURL 世界的門檻,無論未來是學 API 還是滲透測試,它都會是你最重要的好夥伴之一!

讓我們一起成為真正懂 HTTP 的人~

林子婷(飛飛/Phoebe菲比)
林子婷(飛飛/Phoebe菲比)

技術專長:OSINT、滲透測試、網站開發、專業易懂教育訓練。
資安證照:OSCE3、OSED、OSWE、OSEP、OSCP、OSTH、OSWA、OSWP、OSCC、OSCC-SJD。
資安書籍:《資安這條路:領航新手的 Web Security指南》。
教學經驗:50+ 企業教學經驗、指導過上百位學員。
教學特色:新手友善、耐心指導、擅長圖解(流程圖、心智圖)引導學習。
社群經驗:目前經營全臺資安社群 CURA,曾任臺科資安社社長、逢甲黑客社社長。
社群交流:Line 社群《飛飛的資安大圈圈》,即時分享經驗、鼓勵交流。
社群分享:FB 粉專《資安這條路,飛飛來領路》,分享文章與圖卡整理。
資安網站:feifei.tw 資安系列文章