初步測(cè)試
一開(kāi)始嘗試XSS,發(fā)現(xiàn)用戶的輸入在title中展示,那么一般來(lái)說(shuō)就是看能否閉合,我們從下面圖中可以看到,輸入尖括號(hào)后被轉(zhuǎn)成了實(shí)體

繞過(guò)html實(shí)體編碼
解釋一下什么是html實(shí)體編碼
HTML實(shí)體編碼,也即HTML中的轉(zhuǎn)義字符。
在 HTML 中,某些字符是預(yù)留的,例如在 HTML 中不能使用小于號(hào)<和大于號(hào)>,這是因?yàn)闉g覽器會(huì)誤認(rèn)為它們是標(biāo)簽。 如果希望正確地顯示預(yù)留字符,我們必須在HTML源代碼中使用字符實(shí)體(character entities)。 HTML 中的常用字符實(shí)體是不間斷空格。(注意:實(shí)體名稱對(duì)大小寫敏感!) 字符實(shí)體類似這樣:&entity_name; 或者 &#entity_number;如需顯示小于號(hào),我們必須這樣寫:< 或 < 常見(jiàn)的實(shí)體編碼:

繼續(xù)嘗試是發(fā)現(xiàn)我們將 html 十進(jìn)制實(shí)體編號(hào)輸入轉(zhuǎn)義會(huì)閉合title標(biāo)簽

WAF層面
原本想著<img/src=1 onerror=alert(1) />直接秒殺 結(jié)果來(lái)了個(gè)waf 。

下一步按照往常一樣 fuzz事件,結(jié)果全是403,這時(shí)候那沒(méi)辦法了那就不能用img標(biāo)簽了

改換其他標(biāo)簽,fuzz以下 發(fā)現(xiàn)可用的還不少。

然后使用a標(biāo)簽進(jìn)行繞過(guò)
常用的payload,基于下面payload改就行了
<a href="javascript:alert(1)"/>
原本是一番風(fēng)順的 到后面發(fā)先還有過(guò)濾



繞過(guò)javascript,到這里了可能一部分人覺(jué)得已經(jīng)結(jié)束了,但實(shí)際上沒(méi)那么簡(jiǎn)單

前面其實(shí)花的時(shí)間并不多主要繞alert的時(shí)候。此處我嘗試的多種方式包括html實(shí)體繞過(guò),基本都不行,


然后就在此處卡了很久,我也想過(guò)不使用alert使用prompt這些函數(shù)但就是不行,后面發(fā)現(xiàn)后面就是不能跟括號(hào)和反引號(hào)

這時(shí)候就在想,還有不能用括號(hào)進(jìn)行彈窗的函數(shù)?給我整懵逼了,找了一大圈一個(gè)都沒(méi)找到都需要用括號(hào),alert后不需要括號(hào)和反引號(hào)的也過(guò)不了。

最后在推特上看到了這個(gè)最終完成繞過(guò)
aurebesh.js?

本地測(cè)試payload
<a/href="javascript;{var{3:s,2:h,5:a,0:v,4:n,1:e}='earltv'}[self][0][v+a+e+s](e+s+v+h+n)(/infected/.source)" />click
<a href=ja
vascript:k='',a=!k+k,f=!a+k,g=k+{},kk=a[k++],ka=a[kf=k],kg=++kf+k,ak=g[kf+kg],a[ak+=g[k]+(a.f+g)[k]+f[kg]+kk+ka+a[kf]+ak+kk+g[k]+ka][ak](f[k]+f[kf]+a[kg]+ka+kk+"(k)")()> 1111";//</title>
最終效果


轉(zhuǎn)自https://blog.csdn.net/2402_84561171/article/details/143057460