日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
Java利用技巧-通過反射修改屬性

0x00 前言

0x01 簡(jiǎn)介

本文將要介紹以下內(nèi)容:

?反射中的常用操作

?獲得類的所有字段

?獲得類的所有方法

?調(diào)用類的方法

?枚舉JspServletWrapper實(shí)例的實(shí)現(xiàn)細(xì)節(jié)

0x02 反射中的常用操作

1.獲得類的所有字段

getField():

能夠獲取本類以及父類中的public字段

getDeclaredField():

能夠獲取本類中的所有字段

這里以Zimbra環(huán)境為例,給出示例代碼

(1)獲取request對(duì)象的所有字段

(2)獲取request對(duì)象的父類的所有字段

2.獲得類的所有方法

getMethods():

能夠獲取本類以及父類或者父接口中的公共方法(public修飾符修飾的)

getDeclaredMethods():

能夠獲取本類中的所有方法,包括private、protected、默認(rèn)以及public的方法

這里以Zimbra環(huán)境為例,給出示例代碼

(1)獲取request對(duì)象的所有方法

(2)獲取request對(duì)象的父類的所有方法

3.調(diào)用類的指定方法

這里以Zimbra環(huán)境為例,給出示例代碼

搭建好Zimbra漏洞調(diào)試環(huán)境后,定位request對(duì)象的getHeader(String name)方法,代碼細(xì)節(jié)如下:

對(duì)照代碼細(xì)節(jié),參數(shù)類型為String

調(diào)用request對(duì)象的getHeader(String name)方法,參數(shù)為"User-Agent",實(shí)現(xiàn)代碼如下:

0x03 枚舉JspServletWrapper實(shí)例的實(shí)現(xiàn)細(xì)節(jié)

1.下斷點(diǎn)

選擇文件servlet-api-3.1.jar,依次選中javax.servlet->http->HttpServlet.class,在合適的位置下斷點(diǎn),當(dāng)運(yùn)行到斷點(diǎn)時(shí),可以查看request對(duì)象的完整結(jié)構(gòu),如下圖

查看request對(duì)象的結(jié)構(gòu),我們最終定位到了JspServletWrapper實(shí)例的位置,直觀的映射為:request->_scope->_servlet->rctxt->jsps

接下來,我們需要按照這個(gè)映射,通過多次反射最終獲得JspServletWrapper實(shí)例

(1)讀取request對(duì)象的所有字段

在回顯的結(jié)果中能夠找到_scope

(2)從request對(duì)象獲得_scope實(shí)例并再次枚舉字段

在回顯的結(jié)果中能夠找到_servlet

(3)獲得_servlet實(shí)例并再次枚舉字段

回顯的結(jié)果為:serialVersionUID

這里沒有rctxt字段

嘗試尋找原因:開啟調(diào)試器,定位至關(guān)鍵位置,如下圖

從圖中可以看到,_servlet的類為JettyJspServlet

JettyJspServlet繼承自JspServlet,成員變量只有serialVersionUID,這與我們通過訪問jsp頁面得到的結(jié)果一致

查看JspServlet的相關(guān)實(shí)現(xiàn)代碼,如下圖

從圖中可以看到,rctxt為JspServlet的成員變量,屬性為private,所以子類JettyJspServlet無法繼承成員變量rctxt

這里我們可以直接選取_servlet實(shí)例的父類進(jìn)行枚舉字段

(4)選取_servlet實(shí)例的父類進(jìn)行枚舉字段

在回顯的結(jié)果中能夠找到j(luò)sps

(5)獲得jsps實(shí)例并枚舉字段

開啟調(diào)試器,查看jsps的類型,如下圖

從圖中可以看到,jsps的類為ConcurrentHashMap,這里只需要枚舉出所有Key即可

添加需要導(dǎo)入的包后,得出最終實(shí)現(xiàn)代碼:

補(bǔ)充:刪除指定JspServletWrapper的實(shí)例

只需要調(diào)用ConcurrentHashMap的remove方法即可

示例代碼:

0x04 小結(jié)

本文介紹了通過反射枚舉JspServletWrapper實(shí)例的具體實(shí)現(xiàn),記錄思路和細(xì)節(jié),便于以此類推,修改其他內(nèi)容。


標(biāo)題名稱:Java利用技巧-通過反射修改屬性
URL鏈接:http://www.dlmjj.cn/article/djjjioo.html