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 的功能遠不止如此。以后再慢慢研究。