簡介
逛推特突然看到Jackson大佬的xss繞過思路挽懦,挺有意思
上Payload
payload:<svg onload=alert%26%230000000040"1")>
漏洞原理:
alert%26%230000000040等價(jià)于(
這個(gè)payload分為三部分
alert() //html里面的一個(gè)一個(gè)DOM 方法
%26%23 //html編碼等價(jià)于"&#"
0000000040 //就是40
其中的關(guān)鍵就在于,%26%230000000040這個(gè),他等價(jià)于"("閉合了后面的")"茁裙,所以形成了這個(gè)XSS Bypass
但是為啥(回等價(jià)于"("呢彪蓬。
因?yàn)槭褂昧薔CR的方式殉了,使現(xiàn)實(shí)字符實(shí)體名稱或不被瀏覽器支持的一些實(shí)體被瀏覽器顯示贴汪,先找到字符對應(yīng)的UNICODE編碼冯遂,以小于號為例蕊肥,unicode編碼16進(jìn)制為3C(10進(jìn)制為60),在html則可以使用<或<蛤肌,跟上面的表格對照看是否相同壁却,由此我們也可以知道,如果我們的html所采用的編碼不支持一些字符(比如其他國家的字符)裸准,則可以通過NCR來引入我們的頁面就不會(huì)亂碼了展东。
NCR:
Google了一下,這東西專業(yè)名稱叫numeric character reference(NCR)炒俱,直譯就是數(shù)字字符引用盐肃。一個(gè)Numeric Character Reference編碼是由一個(gè)與號(&)跟著一個(gè)井號(#),然后跟著這個(gè)字符的Unicode編碼值权悟,最后跟著一個(gè)分號組成的砸王,就像上面的例子一樣。
有了數(shù)字字符引用峦阁,就可以在網(wǎng)頁中顯示Unicode字符了处硬,不用考慮html文件本身的編碼。