CTFhub-WEB前置-http協議闖關

前情提要:

在滲透學習過程當中,web的基礎知識很重要,在這裏經過long long ago以前學習的http基礎,並結合網上的CTFhub--WEB前置之http協議闖關,對web基礎知識進行加固並查漏補缺;本篇結合CTFhub-http協議闖關加上web基礎。html

1、基礎知識介紹

 A、客戶端的基本概念和常規的主要分類

科普一下:客戶端(client)是指與服務器相對應,爲客戶提供本地服務的程序java

在WEB中,常見的網絡架構爲B/S和C/S兩種;常常在咱們生活中出現的就是B/Snginx

B/S【瀏覽器/服務器】

大體由圖所示組成web

同時對應的該種框架有多種形式的數據庫

A、客戶端--服務器--數據庫apache

  1.客戶端向服務器發起Http請求json

  2.服務器中的web服務層可以處理Http請求瀏覽器

  3.服務器中的應用層部分調用業務邏輯,調用業務邏輯上的方法緩存

  4.若是有必要,服務器會和數據庫進行數據交換. 而後將模版+數據渲染成最終的Html, 返送給客戶端tomcat

B、客戶端--服務器--數據庫

1.客戶端向web服務器發起Http請求

2.web服務可以處理Http請求,而且調用應用服務器暴露在外的RESTFUL接口

3.應用服務器的RESTFUL接口被調用,會執行對應的暴露方法.若是有必要和數據庫進行數據交互,應用服務器會和數據庫進行交互後,將json數據返回給web服務器

4.web服務器將模版+數據組合渲染成html返回給客戶端

C、客戶端-負載均衡器(Nginx)-中間服務器(Node)-應用服務器-數據庫

  Nginx通常處理靜態資源的請求(例如圖片、視頻、CSS、JavaScript文件等),能夠實現負載均衡

  Tomcat通常是處理動態請求

一、整正暴露在外的不是真正web服務器的地址,而是負載均衡器器的地址

二、客戶向負載均衡器發起Http請求

三、負載均衡器可以將客戶端的Http請求均勻的轉發給Node服務器集羣

四、Node服務器接收到Http請求以後,可以對其進行解析,而且可以調用應用服務器暴露在外的RESTFUL接口

五、應用服務器的RESTFUL接口被調用,會執行對應的暴露方法.若是有必要和數據庫進行數據交互,應用服務器會和數據庫進行交互後,將json數據返回給Node

六、Node層將模版+數據組合渲染成html返回反向代理服務器

七、反向代理服務器將對應html返回給客戶端

Nginx服務器的優勢:負載均衡;反向代理

參考文章連接:https://www.cnblogs.com/syomm/p/6018846.html

C/S【客戶機服務器】

 通常創建在專用的網絡上, 小範圍裏的網絡環境, 局域網之間再經過專門服務器提供鏈接和數據交換服務。通常面向相對固定的用戶羣, 對信息安全的控制能力很強. 通常高度機密的信息系統採用C/S 結構適宜。【公司內部財務系統/稅務局/電力系統等

B、客戶端和網站服務器傳輸信息主要依託的協議

TCP/IP、OSI/RM最基礎的網絡結構協議

應用層協議:http【b/s】 smtp【c/s tcp】 snmp【UDP】 ftp【c/s tcp】 telnet[【C/S tcp】 ssh  DNS【udp】

 C、常見的中間件有哪些【web服務器/應用服務器/消息中間件等吧】

Web服務器:WEB服務器與客戶端打交道,它要處理的主要信息有:session、request、response、HTML、JS、CS等

應用服務器:專用的;如Tomcat只處理JAVA應用程序

常見   

Web服務器:apache nginx iis

應用服務器:tomcat[java] weblogic IIS[asp] WebSphere Jetty

D、例舉出常見的網站組件搭配,包含腳本語言,數據庫和服務

IIS          -->ASP  ,ASPX   -->ACCESS  ,MSSQL   Windows

Apache -->PHP              -->MYSQL                      Linux、Windows

Nginx      -->PHP              -->MYSQL                      Linux、Windows

Tomcatnginx    -->  Jsp            -->MYSQL,ORacle           Linux

2、CTFhub-WEB前置-HTTP協議闖關

訪問CTFhub網站

一、HTTP請求方式

服務器返回400:表示客戶端請求語義有誤/請求參數有誤,當前請求沒法被服務器理解。

 

嘗試修改大小寫哦,發現只支持大寫

 

而後就拿到了flag

知識點補充:

HTTP八種方法:

1OPTIONS

返回服務器針對特定資源所支持的HTTP請求方法,也能夠利用向web服務器發送‘*’的請求來測試服務器的功能性

2HEAD

向服務器索與GET請求相一致的響應,只不過響應體將不會被返回。這一方法能夠再沒必要傳輸整個響應內容的狀況下,就能夠獲取包含在響應小消息頭中的元信息。

3GET

向特定的資源發出請求。注意:GET方法不該當被用於產生「反作用」的操做中,例如在Web Application中,其中一個緣由是GET可能會被網絡蜘蛛等隨意訪問。Loadrunner中對應get請求函數:web_linkweb_url

4POST

向指定資源提交數據進行處理請求(例如提交表單或者上傳文件)。數據被包含在請求體中。POST請求可能會致使新的資源的創建和/或已有資源的修改。 Loadrunner中對應POST請求函數:web_submit_data,web_submit_form

5PUT

向指定資源位置上傳其最新內容

6DELETE

請求服務器刪除Request-URL所標識的資源

7TRACE

回顯服務器收到的請求,主要用於測試或診斷

8CONNECT

HTTP/1.1協議中預留給可以將鏈接改成管道方式的代理服務器。

HTTP請求體

請求行:方法字段、baiURL字段和HTTP協議版本【eg:GET /flag.html HTTP/1.1

的名稱;Accept:瀏覽器可接受的MIME類型;Accept-Encoding:瀏覽器知道如何解碼的數據編碼類型;Accept-Language:瀏覽器指定的語言;Accept-Charset:瀏覽器支持的字符編碼;Cookie:保存的Cookie對象;authorizationHTTP受權的受權證書;referer:來源URL地址; content-type: 客戶端發送的實體數據類型

請求體:post/get沒有

HTTP 響應體

相應行: 協議 狀態碼【2xx表示消息正常;3 xx表示重定向; 4xx就是語法錯誤/沒法被執行【401認證存在問題】;5開頭就是服務器問題】

二、HTTP 302 跳轉

打開網頁

點擊givemeflag,看URL發現URL地址發生改變爲index.html

開啓BP抓包,抓住302跳轉

知識點:

第一個頁面請求返回了304 not modified:客戶端執行get請求並帶有上次請求的緩存信息:這兩個字段表示是有條件請求If-Modified-Since 和 If-None-Match;且通過服務端的判斷,該文件的緩存文件是最新,則返回304,且返回中無響應體。

三、HTTP cookie

HTTP是無狀態的協議,第一次和服務器鏈接並登陸成功後,第二次請求服務器仍然沒法定位當前請求的用戶;cookie能夠解決該問題,當第一次登錄成功後,服務器返回cookie給瀏覽器,瀏覽器本地保存cookie,當用戶發起第二次請求時,會自動將cookie發給服務器,服務器就可判斷當前用戶;cookie存儲量較小爲4kB;對應的還有服務器端的session,這個下次遇到了再說;

抓包發現cookie有個admin=0

猜想把0改爲1;服務端認證admin用戶應該是判斷cookie中的admin=後面的0/1來判斷的吧

admin=1便可

 

四、HTTP 基礎認證(401

HTTP中,基本認證(英語:Basic access authentication)是容許http用戶代理(如:網頁瀏覽器)在請求時,提供用戶名和密碼的一種方式

點擊click me但不輸入密碼,則返回401

BP抓包 發現有Authorization: Basic YWRtaW46YWRtaW4= 字樣;將basic後面的字符進行base64解密發現和以前輸入的明文同樣;他的格式是admin:123456

使用BP爆破模塊的自定義迭代器;【具體設置BP迭代參數的步驟詳見本博客的第1篇文章----->https://www.cnblogs.com/007NBqaq/p/13220297.html】按照如上的格式使用3個變量;用戶名 冒號 密碼進行爆破便可;

知識點:

通常返回服務器返回401 Unauthorized,當前請求須要用戶驗證;響應中必須包含一個適用於被請求資源的 WWW-Authenticate 信息頭用以詢問用戶信息;

 

五、HTTP 響應源代碼

 

打開網頁查看源代碼,發現flag藏在此處;

相關文章
相關標籤/搜索