1. 程式人生 > 實用技巧 >漏洞復現-CVE-2017-12629-RCE-solr:XXE

漏洞復現-CVE-2017-12629-RCE-solr:XXE

1.什麼是JSP內建物件

JSP內建物件是wed容器建立的一組物件

例子:

1 <%
2     int[] value = {60,70,80};
3     for(int i:value){
4          out.println(i);
5       }
6 %>

沒有進行宣告和建立,便可以使用out物件

2.常用的JSP內建物件

JSP內建物件包括request物件、response物件、session物件、out物件、application物件、page物件、exception物件、pageContext物件、config物件。這些物件在客戶端與伺服器互動的過程中完成不同的功能

1.Request物件 請求物件,用於客戶端通過HTTP協議連線傳輸到伺服器端的資料。 如:表單資料、網頁地址後的引數

2.Response物件 響應物件,用於向客戶端傳送資訊

3.Out物件 主要用於向客戶端瀏覽器輸出資料

4.session物件 用於保持在伺服器與客戶端之間需要保留的資料,比如網頁QQ登入,在會話視窗對話期間,要保持賬號的登入

5.Application物件 用於儲存使用者資訊、程式碼片段的執行環境 它可以被一個容器中的多個使用者所共享

6.page物件 用於處理JSP網頁,它指JSP頁面物件本身,或者代表編譯後的物件只有在JSP頁面中是合法的 相當於是this

7.exception物件 處理JSP檔案執行時發生的錯誤和異常 只有在page指令中指定才可在本頁面中使用exception物件

8.pageContext物件 用於管理網頁屬性,為JSP頁面包裝頁面的上下文,管理物件的訪問

9.config物件 程式碼片段配置物件,表示Servlet

分類:

1.輸出輸入類:request物件,response物件,out物件

2.通訊控制物件:pageContext物件,session物件,application物件

3.Servlet物件:page物件,config物件

4.處理錯誤物件:exception物件

3.request物件主要用於處理客戶請求

例如:客戶輸入賬戶密碼 可以用request中的方法進行接受傳輸

4.request物件常用方法

1.String getParameter() 根據表單元件的名稱提交資料

2.String[] getParameter() 獲取表單元件多個值時的請求資料

3.void setCharacterEncoding() 指定每個請求的編碼

4.RequestDispatcher getRequestDispatcher() 返回一個RequestDispatcher物件,該物件的forward()方法用於轉發請求

5.讀取資料

String name = request.getParameter("name");讀取單個數據

String[] aaa = request.getParameter("aaa");讀取多個數據

6.處理中文亂碼問題

7.處理中文亂碼問題2

開啟tomcat資料夾 然後開啟conf/server.xml

注意:UTF-8需要加引號,不然會報錯

8.JSP內建物件response(不能攜帶資訊)

response物件用於響應客戶請求並向客戶端輸出不同的資訊

從伺服器檢索到資訊通過設定response物件的響應引數等響應到客戶端

response.sendRedirect("welcome.jsp");

9.如何攜帶資訊跳轉

使用轉發取代重定向實現頁面跳轉

轉發的作用:在伺服器端,將請求傳送給伺服器上的其他資源,以共同完成一次請求的處理 (其他資源代表其他jsp檔案)

轉發的實現:RequestDispatcher物件的forward()方法

request.getRequestDispatcher(“welcome.jsp”).foward(request,response);

RequestDispatcher rd = request.getRequestDispatcher("welcome.jsp").foward(request,response);

10.轉發和重定向的區別

轉發:轉發是在伺服器端發揮作用,將同一請求在伺服器資源間進行傳遞

客戶端瀏覽器的位址列不會顯示轉向後的地址

重定向:重定向是在客戶端發揮作用,通過傳送一個新的請求實現頁面轉向

在位址列中可以顯示轉向後的地址