HTTP協議(5)HTTP請求和響應

以前曾介紹過,全部的HTTP通訊都被構形成一對HTTP請求和HTTP響應,HTTP協議的請求與響應報文都是由「首部header」和「主體body」兩部分組成的。其中主體部分是請求和響應的數據,首部部分則規定了請求和響應的內容格式。web

1.HTTP請求
對於HTTP請求報文,主要由三部分組成:請求行、請求頭、請求正文。在請求頭和請求正文之間通常會有兩個空行進行間隔。
下圖是用Burpsuite截獲的請求報文。
HTTP協議(5)HTTP請求和響應
HTTP請求報文的第一行即爲請求行,這個報文的請求行就是「GET / HTTP/1.1」。
請求行由三部分組成:服務器

  • 第一部分「GET」,代表該請求是採用GET方法;
  • 第二部分「/」,代表請求訪問的頁面,「/」是指網站根目錄,也就是要訪問網站的首頁。它結合請求頭的Host字段能夠組成一個完整的請求URL:「×××w.51cto.com/」
  • 第三部分「HTTP1.1」,代表所使用的HTTP協議版本,目前所使用的都是HTTP1.1版本。
    對於這個報文,因爲採用的是GET方法,於是沒有請求正文。從第二行直至最後一行,都屬因而請求頭(也被稱爲消息頭),服務端據此獲取客戶端的信息。咱們應當熟知請求頭中的內容,這在後面會詳細介紹。
    請求正文是可選的,它最常出如今POST請求方法中。好比打開一個用戶登陸頁面,此時攔截到的HTTP請求就包含完整的三個組成部分。
    HTTP協議(5)HTTP請求和響應

2.HTTP響應
HTTP響應報文整體上也是由三部分組成:響應行、響應頭、響應正文。
下圖是響應報文。
HTTP協議(5)HTTP請求和響應ide

  • HTTP響應的第一行爲響應行,其中有HTTP版本(HTTP/1.1)、狀態碼(200)以及消息「OK」。
  • 第二行至末尾的空白行爲響應頭,由服務器向客戶端發送。
  • 響應頭以後是響應正文,是由服務器向客戶端發送的HTML數據。
    響應報文中的狀態碼和響應頭都比較重要,這個在後面也會詳細介紹。

3.例題:你必須讓他停下
BugKu http://123.206.87.240:8002/web12/
打開網頁以後,發現頁面在不停地刷新。查看源碼,能夠發現是經過一段Javascript的腳原本實現頁面刷新的。
HTTP協議(5)HTTP請求和響應
根據頁面中的提示「Stop at panda ! u will get flag」,再觀察到頁面每刷新一次,<img>標籤中src屬性所指定的圖片來源也在隨之變化,於是能夠推測,當顯示到指定的圖片時,就應該會出現flag。可是flag是經過a標籤來輸出的,a標籤又加了一個style="display:none"的屬性,也就是讓a標籤的內容不在頁面上顯示。因此即便刷新到合適的圖片,在頁面上也看不到flag,而只能經過源碼查看。
明白了原理以後,接下來就很簡單了。咱們能夠在Burpsuite中經過Repeater模塊反覆發送HTTP請求,每次所返回的HTTP響應也應該是在不斷變化的,並且還能夠直接看到響應的源碼。果真當顯示到10.jpg時,flag就出來了。
HTTP協議(5)HTTP請求和響應網站

相關文章
相關標籤/搜索