CTF_WriteUp_HTTP——302臨時重定向問題

  • 2020 年 3 月 26 日
  • 筆記

HTTP——302臨時重定向

題目描述

點擊給出的鏈接後,沒有發生任何變化。

解決方案

通過擦好看網路請求,可以發現發生了302臨時跳轉,所以我們無法通過瀏覽器直接訪問未跳轉的頁面,而flag 可能藏在我們目前無法訪問的頁面之中。所以我們要想辦法去訪問未跳轉的原網站。

而不強制跳轉我們可以通過curl指令來完成。因為curl默認是不跟隨重定向的。

成功在命令行中找出flag;

相關知識

什麼是HTTP 302 跳轉?

首先我們要知道狀態碼,狀態碼是HTTP請求過程結果的描述,由三位數字組成。這三位數字描述了請求過程中所發生的情況。狀態碼位於響應的起始行中,如在 HTTP/1.0 200 OK 中,狀態碼就是 200。

每個狀態碼的第一位數字都用於描述狀態(「成功」、「出錯」等)。如200 到 299 之間的狀態碼錶示成功;300 到 399 之間的程式碼表示資源已經轉移。400 到 499 之間的程式碼表示客戶端的請求出錯了。500 到 599 之間的程式碼表示伺服器出錯了。

整體範圍 已定義範圍 分  類
100~199 100~101 資訊提示
200~299 200~206 成功
300~399 300~305 重定向
400~499 400~415 客戶端錯誤
500~599 500~505 伺服器錯誤

那麼302就屬於重定向的狀態碼,它表示你要訪問的資源在別的地方。

|301 |Moved Permanently |在請求的URL已被移除時使用。響應的Location首部中應該包含資源現在所處的URL|
| —- | —- |
|302 |Found |與301狀態碼類似;但是,客戶端應該使用Location首部給出的URL來臨時定位資源。將來的請求仍應使用老的URL|

302表示臨時重定向,而301表示永久重定向;

PHP 302 跳轉程式碼

<?php      header("HTTP/1.1 302 found");      header("Location:https://www.baidu.com");      exit();  ?>  

PHP 301 跳轉程式碼

<?php      header("HTTP/1.1 301 Moved Permanently");      header("Location: http://www.baidu.com/");      exit();  ?>  

curl 指令

curl是一種命令行工具,作用是發出網路請求,然後得到和提取數據

我們直接在curl命令後加上網址,就可以看到網頁源碼。

curl www.baidu.com  
$ curl www.baidu.com    % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current                                   Dload  Upload   Total   Spent    Left  Speed  100  2381  100  2381    0     0  20350      0 --:--:-- --:--:-- --:--:-- 20350<!DOCTYPE html>  <!--STATUS OK--><html> <head><meta http-equiv=content-type content=text/html;charset=utf-8><meta http-equiv=X-UA-Compatible content=IE=Edge><meta content=always name=referrer>     ......       </html>    

curl 默認是不進行重定向的。如果要進行重定向,我們需要加上-L參數

curl -L taobao.com  

加上 -o 參數可以保存網頁源程式碼到本地

curl -o taobao.txt taobao.com -L  

加上-i參數可以看到響應報文

curl -i baidu.com  
$ curl -i baidu.com    % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current                                   Dload  Upload   Total   Spent    Left  Speed  100    81  100    81    0     0    627      0 --:--:-- --:--:-- --:--:--   627HTTP/1.1 200 OK  Server:  Date: Wed, 25 Mar 2020 16:00:02 GMT  Content-Type: text/html  Content-Length: 81  Connection: keep-alive  Last-Modified: Tue, 12 Jan 2010 13:48:00 GMT  ETag: "51-47cf7e6ee8400"  Accept-Ranges: bytes    <html>  <meta http-equiv="refresh" content="0;url=http://www.baidu.com/">  </html>  

除此之外,curl 的功能遠不止如此。以後再慢慢研究。