阅读这份XSS 备忘单,我注意到一个我从未见过的特殊用法:
\n<img src="/" =_=" title="onerror=\'prompt(1)\'">\nRun Code Online (Sandbox Code Playgroud)\n“=_=”是什么意思?它位于“On Mouse Over\xe2\x80\x8b”这句话的下方。
\n它只是元素上的一个属性。它本身没有任何意义,因此它可能只是作为一种转移注意力的方式出现。
美化一下,代码是:
<img
src="/"
=_=" title="
onerror='prompt(1)'"
>
Run Code Online (Sandbox Code Playgroud)
在 HTML 中,=in 属性指定属性名称和属性值之间的分隔符,因此它是:
<img
src="/"
=_=" title="
onerror='prompt(1)'"
>
Run Code Online (Sandbox Code Playgroud)
如果需要,您可以检索属性值。
=_=" title="
^^ attribute name
=_=" title="
^ delimiter between attribute name and attribute value
=_=" title="
^ attribute value contents delimiter
=_=" title="
^^^^^^^ attribute value
=_=" title="
^ attribute value contents delimiter
Run Code Online (Sandbox Code Playgroud)
const img = document.querySelector('img');
console.log(img.getAttribute('=_'));Run Code Online (Sandbox Code Playgroud)
请注意,属性名称是=_,而不是=_=- 最后一个=是分隔符,而不是属性名称的一部分。
“XSS”仅由 和 引起src,onerror而不是由其他任何原因引起。无论您在哪里遇到这种情况,都=_可能根本没有任何作用。可以,但很可能不会。
<img
src="/"
=_=" title="
onerror='prompt(1)'"
>Run Code Online (Sandbox Code Playgroud)