一次jsp上傳繞過(guò)的思考 --yzddMr6

@yzddmr6

@zsxq: websafe

背景

前幾天有個(gè)小伙伴做項(xiàng)目的時(shí)候遇到一個(gè)問(wèn)題來(lái)問(wèn)我,大概情況如下:

  1. jsp的站,可以任意文件上傳
  2. 上傳jsp會(huì)把<%中的<給轉(zhuǎn)義掉
  3. 上傳jspx會(huì)把<jsp:scriptlet>到</jsp:scriptlet>中的內(nèi)容替換為空

問(wèn)有什么突破辦法?

image.png
image.png

當(dāng)時(shí)研究了一下后jsp和jspx各給了一個(gè)解決方案,后來(lái)發(fā)到星球里后@hosch3n師傅又提出了一種新的方案,tql

image.png

解決方案

其實(shí)問(wèn)題等價(jià)于:

  1. jsp不使用<% %>標(biāo)簽如何執(zhí)行命令
  2. jspx不使用<jsp:scriptlet> </jsp:scriptlet>如何執(zhí)行命令

jsp利用EL表達(dá)式繞過(guò)

jsp是默認(rèn)解析el表達(dá)式的,并且在沒(méi)有jsp標(biāo)簽的情況下也可以直接執(zhí)行,這樣就可以繞過(guò)jsp的限制。

星球里面@Gh0stFx也提到了這一點(diǎn)

image.png
image.png

jspx利用命名空間繞過(guò)

因?yàn)閖spx實(shí)際上是jsp的xml寫(xiě)法,所以繼承了xml的所有特性,例如cdata跟html實(shí)體編碼等,同樣也繼承了命名空間的特性。

https://www.runoob.com/xml/xml-namespaces.html

image.png

在<jsp:scriptlet>這個(gè)標(biāo)簽中,jsp就是默認(rèn)的命名空間,但是實(shí)際上可以隨意替換成其他名字

image.png
image.png

這樣就繞過(guò)了對(duì)<jsp:scriptlet>的過(guò)濾

jspx利用<jsp:expression>繞過(guò)

在jsp中可以利用表達(dá)式繞過(guò),那么jspx中同樣也可以,以下是jsp跟jspx語(yǔ)法的對(duì)照:


image.png

這個(gè)方法是@hosch3n師傅提出來(lái)的,把表達(dá)式寫(xiě)到j(luò)spx中,同樣可以達(dá)到執(zhí)行命令的目的

image.png
image.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容