sqli-labs———伺服器(兩層)架構
首先介紹一下29,30,31這三關的基本情況:
伺服器端有兩個部分:第一部分為tomcat為引擎的jsp型伺服器,第二部分為apache為引擎的php伺服器,真正提供web服務的是php伺服器。工作流程為:client訪問伺服器,能直接訪問到tomcat伺服器,然後tomcat伺服器再向apache伺服器請求資料。資料返回路徑則相反。
此處簡單介紹一下相關環境的搭建。環境為ubuntu14.04。此處以我搭建的環境為例,我們需要下載三個東西:tomcat伺服器、jdk、mysql-connector-java.分別安裝,此處要注意jdk安裝後要export環境變數,mysql-connector-java需要將jar檔案複製到jdk的相關目錄中。接下來將tomcat-files.zip解壓到tomcat伺服器webapp/ROOT目錄下,此處需要說明的是需要修改原始碼中正確的路徑和mysql使用者名稱密碼。到這裡我們就可以正常訪問29-32關了。
重點:index.php?id=1&id=2,你猜猜到底是顯示id=1的資料還是顯示id=2的?
Explain:apache(php)解析最後一個引數,即顯示id=2的內容。Tomcat(jsp)解析第一個引數,即顯示id=1的內容。
以上圖片為大多數伺服器對於引數解析的介紹。
此處我們想一個問題:index.jsp?id=1&id=2請求,針對第一張圖中的伺服器配置情況,客戶端請求首先過tomcat,tomcat解析第一個引數,接下來tomcat去請求apache(php)伺服器,apache解析最後一個引數。那最終返回客戶端的應該是哪個引數?
Answer:此處應該是id=2的內容,應為時間上提供服務的是apache(php)伺服器,返回的資料也應該是apache處理的資料。而在我們實際應用中,也是有兩層伺服器的情況,那為什麼要這麼做?是因為我們往往在tomcat伺服器處做資料過濾和處理,功能類似為一個WAF。而正因為解析引數的不同,我們此處可以利用該原理繞過WAF的檢測。該用法就是HPP(HTTP Parameter Pollution),http引數汙染攻擊的一個應用。HPP可對伺服器和客戶端都能夠造成一定的威脅。
相關文章
- 三層架構及分層架構
- NAS層架構03架構
- 三層架構理解架構
- MVC 與三層架構MVC架構
- 分層架構和SOA架構
- Java三層架構sshJava架構
- .Net三層架構 (轉)架構
- 層次式架構案例架構
- osi7層架構圖架構
- 三層架構與養豬架構
- Vue底層架構及其應用Vue架構
- docker架構和底層技術Docker架構
- 區塊鏈的底層架構區塊鏈架構
- 前端架構思想:聚類分層前端架構聚類
- 4+2 分層架構 - Ricardo架構
- 探索小程式底層架構原理架構
- 軟體架構分層方法論架構
- 三層架構是什麼意思 ?架構
- MVC與三層架構區別MVC架構
- 細說五層網站架構網站架構
- 說說三層架構和MVC架構MVC
- ASp.net 剖析三層架構ASP.NET架構
- .NET應用架構設計—重新認識分層架構(現代企業級應用分層架構核心設計要素)應用架構
- 單體架構、微服務和無伺服器架構架構微服務伺服器
- MVC專案實踐,在三層架構下實現SportsStore,從類圖看三層架構MVC架構
- 遊戲伺服器架構概要遊戲伺服器架構
- MMORPG伺服器架構伺服器架構
- HashMap原理(一) 概念和底層架構HashMap架構
- 深度解析HashMap底層實現架構HashMap架構
- 統一接入層架構的演進架構
- 架構師之路-https底層原理架構HTTP
- 計算機的層次化架構計算機架構
- Java Web(八) MVC和三層架構JavaWebMVC架構
- 三層架構--理論與實踐架構
- DB2 pureScale的三層架構DB2架構
- iOS 網路層架構設計分享iOS架構
- 瞭解ASP.NET底層架構ASP.NET架構
- 兩萬人線上伺服器架構和一些公有云使用心得伺服器架構